我正在开发一个项目,该项目改进了快速排序算法,最坏情况时间复杂度。我通过选择中间轴而不是最左边的选择来修改算法,并在一定次数的迭代后引入插入排序。结果如下:
输入长度为5000到100000的未排序数据:
输入长度为5000到100000的已排序数据:
我现在如何证明已排序数据的时间复杂度O(n^2)
已得到改善?我有上述所有数据,但不知道如何在理论上显示它?没有直接答案,但提示会没问题。
答案 0 :(得分:2)
在分类算法中演示算法改进的常用方法是检测代码以计算比较次数,然后在几个不同的数据集上运行不同的算法,每个数据集具有不同的特征(随机,已排序,反向排序,大多数排序,等)。
这种分析的一个好模型是Tim Peter对他的Timsort算法的撰写:http://hg.python.org/cpython/file/2.7/Objects/listsort.txt