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
|
#include <stdio.h>
void printArray(int array[], int length) { for (int i = 0; i < length; i++) { printf("%d ", array[i]); } printf("\n"); }
int partition(int array[], int i, int j) { int x = array[i]; while (i < j) { while (i < j && array[j] >= x) { j--; } if (i < j) { array[i] = array[j]; i++; } while (i < j && array[i] < x) { i++; } if (i < j) { array[j] = array[i]; j--; } } array[i] = x; return i; }
void quickSort(int array[], int i, int j) { if (i < j) { int index = partition(array, i, j); printArray(array, 8); quickSort(array, i, index - 1); quickSort(array, index + 1, j); } }
int main() { int array[8] = {27, 38, 13, 49, 76, 97, 65, 49}; quickSort(array, 0, 7); return 0; }
|