算法导论之快速排序
2017-05-28 19:21
330 查看
#include <iostream> using namespace std; int PARTITION ( int *A,int p, int r) { int x =A[r]; int i=p-1,a; for(int j=p;j<r;j++) { if(A[j]<=x) { i++; a=A[i]; A[i]=A[j]; A[j]=a; } } a=A[i+1]; A[i+1]=A[r]; A[r]=a; return i+1; } void QUICKSORT(int * A,int p,int r) { if(p<r) { int q=PARTITION(A,p,r); QUICKSORT(A,p,q-1); QUICKSORT(A,q+1,r); } } int main() { int A[]={16,32 ,5, 13,9,12,1,2,11,0}; QUICKSORT(A,0,10); for(int i=0;i<10;i++) cout<<" "<<A[i]; }
快速排序的i一开始指向p-1,j指向的位置表示在j之前的位置与所选pivot关系已知,在j之后的元素位置未知。
之后j自增,碰到比pivot大的元素不动作。i的作用是i左边的都是比pivot小的,i指向的位置的之前元素必然比pivot小。所以当j遇到比pivot小的元素时,i+1所指向的元素必然比pivot大,此时交换ij位置。
相关文章推荐
- 【算法导论实验2】快速排序与第i小数问题
- 【算法导论 第7章 快速排序】
- [算法导论] 快速排序
- MIT:算法导论——4.2快速排序 以及 排序算法时间复杂度分析
- 算法导论之排序:快速排序、归并排序、计数排序、基数排序、桶排序
- 快速排序--【算法导论】
- 算法导论:快速排序优化算法!
- 插入排序,合并排序,堆排序,快速排序,计数排序的实现(算法导论)
- 算法导论7.3快速排序的随机化版本
- 【算法导论】第七章之快速排序
- 算法导论之三:快速排序
- 算法导论 第七章快速排序与随机快速排序
- 【算法导论 第7章 快速排序】
- 【算法导论】快速排序
- 快速排序quicksort-算法导论java实现
- 算法导论4:快速排序 2016.1.4
- 算法导论:快速排序
- 【算法导论】快速排序
- 算法导论之快速排序
- 快速排序--(参考算法导论p146)