*将1,2,3,4, …..,99,100的非等差数列,排序成 100,1,99,2,98,3,……,51,50这样的数列。要求:空间复杂度o(1),时间复杂度o(n)。
这个题应该就是非等差数列;
解决思路:
// 排序数组 拿到 中位数 挨个最大最小互插入。。。 这方法不可行不能满足 空间复杂度o(1)
因为数据的数量和复杂度会消耗的时间很长排序拿到获取中位数需要消耗时间。
逆转数组 Array.Reverse
- 首先逆转数组
判断是否为偶数
输出: 100,98,96,94,92 . . .
- . 排序数组Array.Sort 输出: 1,3,5,7,9,11 . . .
大小互插再次排序
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 + ",");
}
}
}
如图:
本文由 liberxue 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为:2017-08-07 14:25:20