| 12
 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;
 }
 
 |