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
| # include <stdio.h>
int FindPos(int * a, int low, int high); void QuickSort(int * a, int low, int high);
int main(void) { int a[6] = {-2, 1, 0, -985, 4, -93}; int i;
QuickSort(a, 0, 5); for (i=0; i<6; ++i) printf("%d ", a[i]); printf("\n");
return 0; }
void QuickSort(int * a, int low, int high) { int pos;
if (low < high) { pos = FindPos(a, low, high); QuickSort(a, low, pos-1); QuickSort(a, pos+1, high); } }
int FindPos(int * a, int low, int high) { int val = a[low];
while (low < high) { while (low<high && a[high]>=val) --high; a[low] = a[high];
while (low<high && a[low]<=val) ++low; a[high] = a[low]; }
a[low] = val;
return high; }
|