快速排序的数值分析:坏情况有多少?
数据结构与算法
2015-07-16 v1
摘要
我们给出了快速排序(Quicksort)出现坏情况(即排序代价显著超过平均值的输入数据情况)概率的数值结果。采用动态规划计算比较次数频率分布的递推解,从中提取出比较次数超过相对于平均值特定阈值的概率。计算针对数组规模最大为 n = 500 个元素,以及多种划分元素选取方法,从简单的随机选取到我们称之为“三个中位数的递归中位数”的方法。我们发现该概率强烈依赖于选取方法:对于 n = 500 且阈值高于平均比较次数 25% 的情况,概率范围从 2.2*10^(-3) 到 3.0*10^(-23)。我们提出了一种基于递归中位数之方法(recursive median of medians)的快速排序版本,我们的数据表明其最坏情况时间复杂度为 O(n^1.37)。
引用
@article{arxiv.1507.04220,
title = {A numerical analysis of Quicksort: How many cases are bad cases?},
author = {Guido Hartmann},
journal= {arXiv preprint arXiv:1507.04220},
year = {2015}
}
备注
29 pages, 13 figures