首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >双轴快速排序和快速排序有什么区别?

双轴快速排序和快速排序有什么区别?
EN

Stack Overflow用户
提问于 2014-01-04 14:06:11
回答 2查看 35.1K关注 0票数 72

我以前从未见过双轴心快速排序。它是快速排序的升级版吗?

双轴快速排序和快速排序的区别是什么?

EN

回答 2

Stack Overflow用户

发布于 2019-07-06 06:51:41

我只想补充一下,从算法的角度来看(即成本只考虑比较和交换的次数),2轴快速排序和3轴快速排序并不比经典的快速排序(使用1轴)更好,如果不是更差的话。然而,它们在实践中速度更快,因为它们利用了现代计算机体系结构的优点。具体地说,它们的缓存未命中数量较少。因此,如果我们删除所有缓存,只有CPU和主存,在我的理解中,2/3轴快速排序比经典快速排序更差。

参考资料:3轴快速排序:https://epubs.siam.org/doi/pdf/10.1137/1.9781611973198.6分析为什么它们比经典快速排序性能更好:https://arxiv.org/pdf/1412.0193v1.pdf完整且不太详细的参考资料:https://algs4.cs.princeton.edu/lectures/23Quicksort.pdf

票数 6
EN

Stack Overflow用户

发布于 2016-07-23 00:11:05

对于那些感兴趣的人,看看他们是如何在Java中实现这个算法的:

http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8u40-b25/java/util/DualPivotQuicksort.java#DualPivotQuicksort.sort%28int%5B%5D%2Cint%2Cint%2Cint%5B%5D%2Cint%2Cint%29

如源代码中所述:

“如果可以合并,则使用给定的工作区数组切片对指定范围的数组进行排序。

该算法在许多数据集上提供O(n log(n))性能,这些数据集导致其他快速排序性能降级为二次性能,并且通常比传统的(单轴)快速排序实现更快。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20917617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档