1 #include <stdlib.h> 2 #include <stdio.h> 3 4 #define ARRAY_SIZE 10 5 6 void swap(int *x, int *y) 7 { 8 int a = *x; 9 *x = *y; 10 *y = a; 11 } 12 13 int randint(int low, int high) 14 { 15 return (low + (rand() % (high - low + 1))); 16 } 17 18 void quicksort(int *arr, int low, int high) 19 { 20 int i, mid; 21 if (low >= high) 22 return; 23 swap(arr+low, arr + randint(low, high)); 24 mid = low; 25 for (i = low+1; i <= high; i++) 26 { 27 if (arr[i] < arr[low]) 28 { 29 swap(arr + ++mid, arr + i); 30 } 31 } 32 swap(arr + low, arr + mid); 33 quicksort(arr, low, mid-1); 34 quicksort(arr, mid+1, high); 35 } 36 37 void printArray(int *arr, int size, const char *prefix) 38 { 39 printf("%s:", prefix); 40 for(int i = 0; i < size - 1; i++) 41 { 42 printf("%d ", arr[i]); 43 } 44 printf(" "); 45 } 46 47 int main(int argc, char **argv) 48 { 49 int array_unsort[ARRAY_SIZE] = {11, 23, 44, 55, 32, 12, 8, 9, 63, 82}; 50 printArray(array_unsort, ARRAY_SIZE, "before sort"); 51 quicksort(array_unsort, 0, ARRAY_SIZE-1); 52 printArray(array_unsort, ARRAY_SIZE, "after sort"); 53 return 0; 54 55 }