合并排序,无需额外空间或就地

时间:2012-09-18 11:20:22

标签: algorithm sorting language-agnostic

  

可能重复:
  How to sort in-place using the merge sort algorithm?

通常我们使用额外的数组来使用合并排序对其进行排序,是否可以在不使用额外空间的情况下执行此操作?

如果可以,那么合并排序会比快速排序更好吗?

1 个答案:

答案 0 :(得分:5)

是的,可以执行in-place merge sort这并不意味着它不需要任何额外的内存,因为递归仍然需要O(lg n )堆栈空间(就像快速排序一样)。

编辑:我阅读Katajainen文件已经很久了,我从未关注太空复杂性声明;显然,合并排序可以在O(1)额外空间中完成。

但不是,所有这些并不意味着一个算法更好比另一个算法更好,除非您指定该词的含义。无论输入如何,随机快速排序虽然可以是二次方的,但仍会执行较小的预期操作次数。哪一个“更好地”用于您的数据取决于从数据统计到程序运行的硬件的各种因素。