快排为什么比归并快?

Posted Luowaterbi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快排为什么比归并快?相关的知识,希望对你有一定的参考价值。

在quicksort中,效率的主要来源之一是参考位置,计算机硬件经过优化,访问彼此靠近的内存位置往往比访问散落在内存中的内存位置要快。quicksort中的分区步骤通常具有很好的位置性,因为它访问的是靠近前面和后面的连续阵列元素。因此,quicksort的性能往往比其他排序算法(如heapsort)好得多,即使它经常做大致相同数量的比较和交换,因为在heapsort的情况下,访问是比较分散的。

此外,quicksort通常比其他排序算法快得多,因为它是就地操作,不需要创建任何辅助数组来保存临时值。与合并排序相比,这可能是一个巨大的优势,因为分配和删除辅助数组所需的时间可能是很明显的。就地操作也改善了quicksort的位置性。

当使用链接列表时,这些优势都不一定适用。因为链接列表单元通常分散在整个内存中,访问相邻的链接列表单元没有位置优势。因此,quicksort 的巨大性能优势之一被吃掉了。同样,就地工作的好处也不再适用,因为合并排序的链表算法不需要任何额外的辅助存储空间。

也就是说,quicksort 在链表上仍然非常快。合并排序只是倾向于更快,因为它更均匀地将列表分成两半,并且每次迭代做合并的工作比做分割的步骤更少。

以上是关于快排为什么比归并快?的主要内容,如果未能解决你的问题,请参考以下文章

快排为什么比归并快?

快排为什么比归并快?

链表排序中为什么归并比快排好?

链表排序中为什么归并比快排好?

三种排序:快排,归并,堆排

堆排/快排/希尔/归并排序,谁更快?