注册 登录
编程论坛 C# 论坛

有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

学好好要饭 发布于 2016-05-04 09:56, 11299 次点击
有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
13 回复
#2
学好好要饭2016-05-04 11:24
谁来解答下啊
#3
qq10235692232016-05-04 11:37
通过比较找到插入位置,再将插入位置后面原来的数后移一位,不会?
#4
over12302016-05-04 11:39
原来的规律有不?要没规律,那就得先找规律,就难了。
要是只是降序或者升序,那找到原来数组中小于当前数和大于当前数的位置,然后插进去就行了。
#5
学好好要饭2016-05-04 13:45
回复 3楼 qq1023569223
c#语言,一开始给已个数组之后,再添加一个数,不会
#6
学好好要饭2016-05-04 13:46
回复 4楼 over1230
1,5,7,8,34,56,78,89,数如一个数,插入
#7
qq10235692232016-05-04 13:50
程序代码:
using System;

namespace ConsoleTest2
{
    class Program
    {
        static void Main(string[] args)
        {
            const int n = 9;
            int[] a = { 0, 1, 2, 3, 5, 6, 7, 8, 9 };  //n=9
            int[] b = new int[n + 1];                 //n+1=10

            int insertNumber = Int32.Parse(Console.ReadLine());

            int index = 0, i = 0;
            for (;i < n; ++i)
            {
                if(a[i]>insertNumber)
                {
                    index = i;
                    break;
                }

                if (i == n - 1) index = n;
            }

            if(index==n)
            {
                for (i = 0; i < n; ++i) b[i] = a[i];
                b[n] = insertNumber;
            }
            else if(index==0)
            {
                for (i = 1; i < n + 1; ++i) b[i] = a[i - 1];
                b[0] = insertNumber;
            }
            else
            {
                for (i = 0; i < index; ++i) b[i] = a[i];
                for (i = n - 1; i >= index; --i) b[i + 1] = a[i];
                b[index] = insertNumber;
            }

            for(i=0;i<n+1;++i)
            {
                Console.Write("{0} ", b[i]);
            }

            Console.ReadKey();
        }
    }
}
#8
学好好要饭2016-05-04 14:07
回复 7楼 qq1023569223
好长啊,初学者,有点,在来一题     //10个小孩围成一圈分糖果,老师顺次分给每个人的糖块数为
            //12,2,8,22,16,4,10,6, 14,20。然后按下列规则调整
            //,所有小孩同时把自己的糖果分一半给右边的小孩,糖块数变为奇数的人,
            //再向老师补要一块,问经过多少次调整后,大家的糖块一样多,且每人多少块。
#9
学好好要饭2016-05-04 14:20
回复 7楼 qq1023569223
有没有这种稍微有“难度”的c#题的书籍推荐,练习编程,我初学者
#10
qq10235692232016-05-04 16:49
回复 8楼 学好好要饭
书什么的没有,你要的话找C语言的题目是一样的。下面是另一个题目的程序。
程序代码:
using System;

namespace ConsoleTest2
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] a = { 12, 2, 8, 22, 16, 4, 10, 6, 14, 20 };
            int n = 0;

            display(a, n);

            while(!process(a))
            {
                ++n;
                display(a, n);
            }

            display(a, n+1);

            Console.WriteLine("count={0},result={1}", n+1, a[0]);
            Console.ReadKey();
        }

        static bool process(int[] a)
        {
            int i = 0;
            int tmp = a[9];
            int temp;

            for (; i < 10; ++i)
            {
                temp = a[i];
                a[i] = a[i] / 2 + tmp / 2;
                tmp = temp;
            }
            
            for(i=0;i<10;++i)
            {
                if (a[i] % 2 == 1) a[i] += 1;
            }

            int j = 0;
            for(i=0;i<10;++i)
            {
                for(j=i+1;j<10;++j)
                {
                    if (a[i] != a[j]) return false;
                }
            }

            return true;
        }

        static void display(int[] a,int cnt)
        {
            int i = 0;
            Console.Write("{0}>>>>>", cnt);
            for (; i < 10; ++i) Console.Write("{0} ", a[i]);
            Console.WriteLine();
        }
    }
}


[此贴子已经被作者于2016-5-4 17:29编辑过]

#11
学好好要饭2016-05-04 19:51
回复 10楼 qq1023569223
c答案看起来不方便,这两题难吗?我感觉还行,虽然做不出,怎么要这么多代码。。。
#12
学好好要饭2016-05-04 19:52
调式了下,这答案,溜溜溜。。。。。。
#13
yhlvht2016-05-04 20:15
这么热闹,我也来一个
程序代码:
using System;
using System.Collections.Generic;
using System.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] arrInt = new int[] { 1, 5, 7, 8, 34, 56, 78, 89 };
            int insertNumber = Int32.Parse(Console.ReadLine());
            List<int> list = arrInt.ToList<int>();
            list.Add(insertNumber);
            IEnumerable<int> list1 = list.OrderBy<int, int>((t) => { return t; });
            arrInt = list1.ToArray<int>();
            foreach (int i in arrInt)
            {
                Console.Write(i + " ");
            }
            Console.Read();
        }
    }
}
#14
yhlvht2016-05-04 22:10
程序代码:
using System;
using System.Collections.Generic;
using System.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] arrInt = new int[] { 12, 2, 8, 22, 16, 4, 10, 6, 14, 20 };
            int count = 0;
            int num = Start(arrInt, ref count);
            Console.WriteLine("count={0},result={1}", count, num);
            Console.ReadKey();
        }

        static int Start(int[] arrInt, ref int count)
        {
            IEnumerable<int> ie = arrInt.Select<int, int>((t) => { return t / 2; });
            List<int> list = ie.ToList<int>();
            list.Insert(0, list[list.Count - 1]);
            list.RemoveAt(list.Count - 1);
            IEnumerable<int> arrInt1 = ie.Zip<int, int, int>(list, (t, t1) => { return t + t1; });
            arrInt1 = arrInt1.Select<int, int>((t) =>
            {
                if (t % 2 != 0)
                    return ++t;
                else
                    return t;
            });
            count++;
            int i = arrInt1.ToArray<int>()[0];
            if (!arrInt1.All<int>((t) => { return t == i; }))
            {
                display(arrInt1.ToArray<int>(), count);
                i = Start(arrInt1.ToArray<int>(), ref count);
            }
            return i;
        }

        static void display(int[] a, int cnt)
        {
            int i = 0;
            Console.Write("{0}>>>>>", cnt);
            for (; i < 10; ++i) Console.Write("{0} ", a[i]);
            Console.WriteLine();
        }
    }
}
1