快速排序算法平均情况下的时间复杂度为O(nlog2底n),最坏情况下的时间复杂度为O(n的平方)。
最坏情况的发生与轴值的选择有关。为了避免最坏情况的发生,对轴值的选择可以采用随机确定法(从待排序子序列中随机选择一个元素作为轴值)和三者取中法(选取待排序子序列中第一、中间和最后,三个元素中值在中间的作为轴值)。
当待排序子序列的长度小于一定值时,对其递归调用快速排序,执行速度并不快。一个可行的优化措施是,当子序列的长度小于9时,不对子序列执行任何操作,这样调用快速排序算法后得到的是一个近似有序的序列,最后对该序列执行一次直接插入排序(对近似有序序列执行直接插入算法,速度很快)。
上面两种优化措施,不能改变快速排序算法在平均情况下的时间复杂度,只是比没有优化的程序执行稍快一些。
比较排序算法的时间复杂度的下限是O(nlog2底n),非比较排序算法的时间复杂度可以达到O(n)。
快速排序算法不能称为最快的排序算法,某些情况下使用非比较排序算法更快,但非比较排序算法的应用有一些限制条件,所以称快速排序算法为最实用的排序算法还是比较妥当的。
[此贴子已经被作者于2006-7-6 10:57:46编辑过]