1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
int part(int a[], int low, int high){
int piv = a[high];
int index = low;
for(int i = low; i < high; i++){
if(a[i] <= piv){
a[i] ^= a[index];
a[index] ^= a[i];
a[i] ^= a[index];
//tried a[i]^=a[index]^=a[i]^=a[index] and same result.
index++;
}
}
swap(a[index], a[high]);
return index;
}
void quick_sort(int a[], int low, int high){
if(low >= high) return;
int piv = part(a, low, high);
quick_sort(a, low, piv-1);
quick_sort(a, piv+1, high);
}
int main()
{
int a[9] = {31, 41, 59, 206, 200, 25111, 26, 41, 58};
quick_sort(a,0,8);
for(auto x: a) cout << x << " ";
return 0;
}
|