快速排序就是选定一个参照物,然后比这个参照物小的放它左边,比它大的放右边,然后分别对左边和右边重复以上操作。
#include<iostream> #include<cstdio> #include<algorithm> using namespace std; int quick(int* a,int l,int r) { int x = a[l]; int j = l; while(l<r) { for(;r>=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<n;++i) printf("%d ",a[i]); printf("\n"); return 0; }