混合快速/合并排序对随机数据的性能

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了混合快速/合并排序对随机数据的性能相关的知识,希望对你有一定的参考价值。

测试要求我实施一种排序算法,该算法通过合并合并对大小为N> 1000的数组进行排序,否则通过带有枢轴的快速排序随机选择。然后,假设要比较的键由[1,M]上随机分布的整数组成。要使上述算法最佳运行,M应该是多少?

如果大小小于等于1000,我让快速排序处理合并排序的递归调用。我认为,由于随机键,随机枢轴和Hoare的分区方案不会因M小于N而使重复元素变慢,因此,快速排序将以最佳状态运行,而合并排序针对特定数组大小将运行相同不管密钥分配如何,那么这里M代表什么?

答案

Quicksort必须谨慎执行,以免发生病理情况。随机选择枢轴是避免排序数组上二次时间复杂度的好方法,但是对于具有许多重复元素的数组而言,这还不够。

如果MN小得多,则将有很多重复项。原始算法不能有效地处理重复项,这会导致快速排序性能显着降低,因为Hoare的原始算法仅对具有所有相同元素的数组的每个递归级别删除一个元素。

请参阅此问题,以研究实际的实现,在小范围内具有随机分布数据的数组上的行为以及如何解决快速排序实现以避免性能下降的问题:Benchmarking quicksort and mergesort yields that mergesort is faster

以上是关于混合快速/合并排序对随机数据的性能的主要内容,如果未能解决你的问题,请参考以下文章

随机选择第k小元素随机快速排序-算法设计与分析实验四

随机选择第k小元素随机快速排序-算法设计与分析实验四

随机选择第k小元素随机快速排序-算法设计与分析实验四

挖掘算法中的数据结构:O(n*logn)排序算法之 快速排序(随机化二路三路排序) 及衍生算法

数据结构和算法——快速排序

在 MySQL 查询中按随机混合的记录排序