快速排序(Quicksort)算法简称快排,是学习算法和数据结构的初学者必须接触的一种经典的排序方法。这篇文章从三个部分分别介绍快速排序算法的实现、性能的分析以及算法的优化。
一、快速排序算法的伪代码实现
快速排序的三步分治过程:
- 首先将数组A[p....r]划分为两部分A[p..q-1]、A[q+1..r],使得左半部分中的每个元素都小于等于A[p],右半部分的元素都大于A[p];
- 通过递归调用对A[p..q-1] 进行排序;
- 通过递归调用对 A[q+1..r] 进行排序。
算法代码:
QUICKSORT(A,p,r)
if p<r
q=PARTITION(A,p,r)
QUICKSORT(A,p,q-1)
QUICKSORT(A,q+1,r)
PARTITION构造过程:
PARTITION(A,p,r)
x=A[p]
i=p+1
for j=i to r
if A[j]<=x
exchange A[i] with A[j]
i=i+1
exchange a[i-1] with A[p]
return i-1
动图演