深入快速排序[Quick][三]最坏时间复杂度
2013-03-21 09:41
169 查看
最坏情况是每次划分选取的基准都是当前无序区中最小(或最大)的记录。
划分的结果是基准左边的子区间为空(或右边的子区间为空),而划分所得的另一个非空的子区间中记录数目,仅仅比划分前的无序区中记录个数减少一个。
因此,快速排序必须做n-1次划分,第i次划分开始时区间长度为n-i+1,所需的比较次数为n-i(1≤i≤n-1),故总的比较次数达到最大值:
Cmax = n(n-1)/2=Cmax = n(n-1)/2=O(n2)
划分的结果是基准左边的子区间为空(或右边的子区间为空),而划分所得的另一个非空的子区间中记录数目,仅仅比划分前的无序区中记录个数减少一个。
因此,快速排序必须做n-1次划分,第i次划分开始时区间长度为n-i+1,所需的比较次数为n-i(1≤i≤n-1),故总的比较次数达到最大值:
Cmax = n(n-1)/2=Cmax = n(n-1)/2=O(n2)
相关文章推荐
- 最坏情况快速排序的运行时间为Ο(nlgn)的算法
- C/C++ 数组排序(平均时间复杂度 O(nlogn))归并、快速、堆、希尔之堆排序
- 快速排序 及其时间复杂度和空间复杂度
- 排序算法之 快速排序 及其时间复杂度和空间复杂度
- java 快速排序 时间复杂度 空间复杂度 稳定性
- C/C++ 数组,链表排序(平均时间复杂度 O(nlogn))归并、快速、堆、希尔之归并排序
- C/C++ 数组排序(平均时间复杂度 O(nlogn))归并、快速、堆、希尔之快速排序
- 算法导论-9.3-3-快速排序-最坏时间O(nlgn)
- 快速排序的时间复杂度nlogn是如何推导的??
- C/C++ 数组排序(平均时间复杂度 O(nlogn))归并、快速、堆、希尔之希尔排序
- java 快速排序 时间复杂度 空间复杂度 稳定性
- 快速排序和二分查找时间复杂度详解
- 快速排序[平均时间复杂度O(NlogN)]
- 几种排序在最坏和最好情况下的时间复杂度
- 排序算法之 快速排序 及其时间复杂度和空间复杂度
- 排序的最好和最坏的时间复杂度问题
- 快速排序的时间复杂度nlogn是如何推导的??
- C++实现几种常用的时间复杂度为O(nlogn)的排序方法:归并排序、快速排序、堆排序、希尔排序
- 8大排序之----快速排序与时间复杂度
- java 快速排序 时间复杂度 空间复杂度 稳定性