快排为什么比归并快?

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

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

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

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

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值