将1,2,3,4, .....,99,100的非等差数列排序。

博客分类: 面试题 阅读次数: comments

将1,2,3,4, .....,99,100的非等差数列排序。

*将1,2,3,4, …..,99,100的非等差数列,排序成 100,1,99,2,98,3,……,51,50这样的数列。要求:空间复杂度o(1),时间复杂度o(n)。

这个题应该就是非等差数列;

解决思路:

// 排序数组 拿到 中位数 挨个最大最小互插入。。。 这方法不可行不能满足 空间复杂度o(1)

因为数据的数量和复杂度会消耗的时间很长排序拿到获取中位数需要消耗时间。

逆转数组 Array.Reverse

大小互插再次排序

          int[] temp = list;
            // 逆转数组
            Array.Reverse(temp);
            foreach (int i in temp)
            {
                if (i % 2 == 0)
                {
                    //Console.ForegroundColor = ConsoleColor.Green;

                    Console.WriteLine(i + ",");
                }
            }
            Console.WriteLine("------------------");

            // 排序数组
            Array.Sort(list);
            foreach (int i in list)
            {
                if (i % 2 != 0)
                {
                    Console.WriteLine(i + ",");
                }
            }

        }  

如图:

逆转数组

vs2017 for Mac