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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
| #include<iostream> using namespace std;
void print(int* arr, int len) { for (int i = 0; i < len; i++) { cout << arr[i] << " "; } cout << endl; }
int parttion(int arr[], int low, int high) { int i = low; int j = high;
int base = arr[low];
if (low < high) { while (i < j) { while (i < j && arr[j] >= base) { j--; } if (i < j) { arr[i++] = arr[j];
} while (i < j && arr[i] < base) { i++; } if (i < j) { arr[j--] = arr[i]; } } arr[i] = base; } return i; }
void QuickSort(int* arr,int low, int high) { if (low < high) { int index = parttion(arr, low, high); QuickSort(arr, low, index - 1); QuickSort(arr, index + 1, high); } }
int main(void) { int arr[] = { 3,1,4,5,5,4,1,3 }; int len = sizeof(arr) / sizeof(arr[0]); QuickSort(arr, 0, len - 1); print(arr, len); return 0; }
|