我想我有一个解决方案,但我不完全确定。
我的解决方案是将数组转换为链接列表。然后以递归方式合并和排序链表。
我已经读到内存中需要O(1)空间。但我不确定运行时间是否比线性时间快。
有什么建议吗?
答案 0 :(得分:2)
有一种特殊情况,你可以在恒定时间内合并2个数组:
可以通过一次测试来检查案例。
这可能看起来很荒谬,但对于mergesort
来说这是一个非常常见的情况,对这个特殊情况的测试首先会对已经完全或部分排序的数组显着提高mergesort
性能。可以使用类似的测试来处理按相反顺序排序的数组,精心设计的代码可以为排序和反向排序的数组实现O(N)
排序时间,同时保持一般情况下相同数量的元素比较。 / p>
答案 1 :(得分:0)
我的解决方案是将数组转换为链接列表。
这需要O(N)时间和记忆。