第七章 快速排序
总结:这章讲了快速排序的算法,分析了算法复杂性,又讲了快速排序的随机版
1. 快速排序
PARTITION(A, p, r)将A[p…r]进行就地重排,返回q,其中A[p…q-1]中的元素都小于A[q],A[q+1,…r]中的元素都大于A[q]。
QUICKSORT(A, p, r)递归排序
分析:最坏情况O(n^2)
最好情况O(nlgn)
平均情况O(n^2)
伪代码
PARTITION (A, p, r)
x <- A[r]
i <- p-1
for j <- p to r-1
do if A[j]<=x
then i <- i+1
exchange A[i] <-> A[j]
exchange A[i+1] <-> A[r]
return i+1
QUICKSORT(A, p, r)
if p < r
then q <- PARTION(A, p, r)
QUICKSORT(A, p, q-1)
QUICKSORT(A, q+1, r)
2. 快速排序的随机版
引入了随机算法,在PARTITION中不用A[r]做主元,而是从子数组A[p…r]中随机选择一个元素作为主元。
分析:最坏情况O(n^2)
最好情况O(nlgn)
平均情况O(n^2)
伪代码
RANDOMIZED-PARTITION(A, p, r)
i <- RANDOM(p, r)
exchange A[i] <-> A[r]
return PARTITION(A, p, r)
本篇博客详细讲解了快速排序算法的核心概念、复杂度分析,并对比了标准快速排序与随机快速排序的区别。通过伪代码和实际代码实现,深入探讨了算法优化策略。

605

被折叠的 条评论
为什么被折叠?



