通常我们使用额外的数组来使用合并排序对其进行排序,是否可以在不使用额外空间的情况下执行此操作?
如果可以,那么合并排序会比快速排序更好吗?
答案 0 :(得分:5)
是的,可以执行in-place merge sort。 这并不意味着它不需要任何额外的内存,因为递归仍然需要O(lg n )堆栈空间(就像快速排序一样)。
编辑:我阅读Katajainen文件已经很久了,我从未关注太空复杂性声明;显然,合并排序可以在O(1)额外空间中完成。
但不是,所有这些并不意味着一个算法更好比另一个算法更好,除非您指定该词的含义。无论输入如何,随机快速排序虽然可以是二次方的,但仍会执行较小的预期操作次数。哪一个“更好地”用于您的数据取决于从数据统计到程序运行的硬件的各种因素。