双枢轴快速排序和快速排序有什么区别?
我以前从未见过双枢轴快速排序。它是快速排序的升级版吗?
双枢轴快速排序和快速排序有什么区别?
我以前从未见过双枢轴快速排序。它是快速排序的升级版吗?
双枢轴快速排序和快速排序有什么区别?
我在Java文档中找到了这个。
排序算法是Vladimir Yaroslavskiy,Jon Bentley和Joshua Bloch的Dual-Pivot Quicksort。此算法在许多数据集上提供 O(n log(n)) 性能,这些数据集会导致其他快速排序降级为二次性能,并且通常比传统的(单透视)快速排序实现更快。
然后我在谷歌搜索结果中找到这个。快速排序算法理论:
相比之下,双枢轴快速排序:
我只想补充一点,从算法的角度来看(即成本只考虑比较和交换的数量),2-pivot快速排序和3-pivot快速排序并不比经典的快速排序(使用1个枢轴)更好,如果不是更糟的话。但是,它们在实践中更快,因为它们具有现代计算机体系结构的优势。具体来说,它们的缓存未命中数较小。因此,如果我们删除所有缓存并且只有CPU和主内存,那么在我的理解中,2/3-pivot快速排序比经典的快速排序更糟糕。
参考文献: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