假设数组是1,3,5,14,15,20,21,22,6,8,10,11,12,16,18,19
请用O(1)的时间将数组归并成有序数组。
这个题目最基础的想法就是把后面的数据每次一个的插入到前面已经有序的数组中。优化点在于在前面查找插入位置的时候可以用二分查找。
那么这个方法最快也是O(nlogn)的。有没有更快的算法呢?
看下面的思路:
既然从后半数组中找一个数插入到前面去,这种方法比较慢,那么能不能一段一段的插到前面呢?
从前一般的数组中找到第一个比后一半的第一个数字b大的数,记为a,
再从后一半中b之后的数组中找到第一个大于a的数字,记为c,
然后,把从a开