快速排序最差时间复杂度?

时间:2011-12-03 02:58:23

标签: algorithm quicksort

我正在开发一个项目,该项目改进了快速排序算法,最坏情况时间复杂度。我通过选择中间轴而不是最左边的选择来修改算法,并在一定次数的迭代后引入插入排序。结果如下:

输入长度为5000到100000的未排序数据:

  1. 在我修改的快速排序中进行的比较次数远少于在常规快速排序中进行的比较次数。
  2. 如果是数据,则两者的经过时间均为零秒。
  3. 输入长度为5000到100000的已排序数据:

    1. 在我修改的快速排序中进行的比较次数仍然远低于常规快速排序中的比较次数。
    2. 我修改的快速排序的经过时间远远少于所有长度数据的常规快速排序所用的时间。
    3. 我现在如何证明已排序数据的时间复杂度O(n^2)已得到改善?我有上述所有数据,但不知道如何在理论上显示它?没有直接答案,但提示会没问题。

1 个答案:

答案 0 :(得分:2)

在分类算法中演示算法改进的常用方法是检测代码以计算比较次数,然后在几个不同的数据集上运行不同的算法,每个数据集具有不同的特征(随机,已排序,反向排序,大多数排序,等)。

这种分析的一个好模型是Tim Peter对他的Timsort算法的撰写:http://hg.python.org/cpython/file/2.7/Objects/listsort.txt