快速排序是处理大数据集合最快的排序算法之一; 分而治之, 通过递归的方式,将数据依次分解为包含较小元素 和 较大元素的不同子序列,
利用主定理分析时间复杂度 请先看下面的主定理: 主定理: T [n] = aT[n/b] + f (n) 其中 a >= 1 and b > 1 是常量 并且 f (n) 是一个渐近正函数, 为了使用这个主定理,您需要考虑下列三种情况: 快速排序的每一次划分把一个 问题分解成两个子问题,其中的关系可以用下式表示: T[n] = 2T[n/2] + O(n) 其中O(n)为PARTITION()的时间复杂度,对比主定理, T [n] = aT[n/b] + f (n) 我们的快速排序中:a = 2, b = 2, f(n) = O(n) 那么为什么还有最坏情况呢? 考虑如下极端情况, T[n] = T[n-1] + T[1] + O(n), 问题来了,这一次的划分白玩了,划分之后一边是一个,一边是n-1个,这种极端情况的时间复杂度就是O(n2).