原地归并排序是否可以算作是那个神秘的排序算法

来源:4-13 排序算法总结

道临

2019-06-17

归并排序的缺点就是开辟了额外的空间
于是我在网上搜索了一下原地的归并排序是否可以实现, 发现的确有原地归并
因为使用递归所以依然有 logn 的空间复杂度, 为了避免这个开销, 使用循环来进行实现
那么如果使用循环实现原地归并排序,
并且对有序的情况进行优化, 即arr[mid] < arr[mid+1] 直接return, 时间复杂度就应该是 O(n)的了
是不是就是那个神秘的排序算法呢?
以上只是个人猜测

写回答

1回答

liuyubobobo

2019-06-17

时间复杂度不可能是O(n):)


arr[mid] < arr[mid+1] 的时候直接return,只能保证在数组有序的时候,进化成O(n),是带条件的。但是对于一个随机数组,依然是O(nlogn)。


基于比较的排序算法,时间下届是O(nlogn)的:)


计数排序,桶排序,基数排序,是O(n)级别的。但是他们的排序方式,不是基于两个元素之间的比较的。如果有兴趣,可以在网上查一查这三种排序的原理:)


加油!:)

0
4
道临
回复
unknown花名
我也仔细看了一下,不仅不稳定而且复杂度也比nlogn高,是我想错了
2019-07-16
共4条回复

算法与数据结构(C++版) 面试/评级的算法复习技能包

课程专为:短时间内应对面试、升职测评等艰巨任务打造

11187 学习 · 1614 问题

查看课程