快速排序
伪代码:
QuickSort(A,p,r)
if p<r
q = Partition(A,p,r) //确定划分位置
QuickSort(A,p,q-1) //子数组A[p…q-1]
QuickSort(Q,q+1,r) //子数组A[q+1…r]
end
//快速排序关键过程是对数组进行划分,划分过程需要选择一个主元素(pivot element)作为参照,围绕着这个主元素进划分子数组
Partition(A,p,r) //p、r为数组下标
x = A[r] //将最后一个元素作为主元素
i = p-1 // i指向的是比主元素小的位置,
for j = p to r-1 //从第一个元素开始到倒数第二个元素结束,比较确定主元素的位置
do if A[j] <= x
then i = i+1 //如果比主元素小,则把i=i+1的位置上的元素和j位置发现小元素互换
exchange A[i] <-> A[j]
exchange A[i+1]<->A[r] //最终确定主元的位置
return i+1 //返回主元的位置
end
详细参考:http://www.cnblogs.com/Anker/archive/2013/01/24/2875234.html