快速排序就是选定一个参照物,然后比这个参照物小的放它左边,比它大的放右边,然后分别对左边和右边重复以上操作。
#include#include #include using namespace std;int quick(int* a,int l,int r){ int x = a[l]; int j = l; while(l =l;--r) if(x >= a[r]) break; swap(a[j],a[r]); //把x交换进去,是为了避免下标超界,这样就不会越界了, j = r; for(;l<=r;++l) if(x <= a[l]) break; swap(a[j],a[l]); j = l; } //a[j] = x; return j;}void qSort(int* a,int l,int r){ if(l>=r) return; int x = quick(a,l,r); qSort(a,l,x-1); qSort(a,x+1,r);}int main(){ int a[] = { 9,10,2,6,8,1,5,4,3,7}; int n = sizeof(a)/sizeof(int); qSort(a,0,n-1); for(int i=0;i