1. 写一个数组,第一个数作为基准X
2. 指针i,指向左边,j指向右边。
3. 从j开始,找到小于X的数,放在a[i],也就是,如果a[j]> X, j--; a[i++]=a[j];
4. 现在,i已经向右挪动了一个。从i开始,向右找到大于X的数,放在a[j],也就是, 如果a[i]<X, i++; a[j--]=a[i];
5. 重复2-4,一直到i==j,这时候,a[i]=a[j]的左边都小于X,右边都大于X。令a[i]=X;
6. 递归调用
#include#include using namespace std;void quickSort(int a[], int l, int r){ if (l < r) { int i = l, j = r; int x = a[l];//挖出来第一个坑 while (i < j){ while (i = x) j--; if (i
上图来自:http://blog.csdn.net/wuxinyicomeon/article/details/5996675