quicksort快排
废话不多说,上代码:
void quicksort(int x[], int lo, int hi){ int i = lo, j = hi; int pivot = x[(lo + hi) >> 1]; while(i <= j){ while(x[i] < pivot) i++; while(x[j] > pivot) j--; if(i <= j){ swap(x[i], x[j]); i++; j--; } } if(lo < j) quicksort(lo, j); if(i < hi) quicksort(i, hi); }
注意学会这个partition algorithm,随便选一个值当做pivot,然后两个指针分别指向两头,往中间挤。
Reference: here