
《算法导论》第七章
快速排序
伪代码:
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
详细参考:wwwblogs/Anker/archive/2013/01/24/2875234.html