#include<stdio.h>
void fast_sort(int *a, int low, int high);
int findpos(int * a, int low, int 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;
}
void fast_sort(int *a, int low, int high)
{
int pos;
if (low<high)
{
pos = findpos(a, low, high);
fast_sort(a, low, pos - 1);
fast_sort(a, pos + 1, high);
}
}
int main(void)
{
int a[6] = { 1, 2, 3, 5, 12, 67};
fast_sort(a, 0, 5);
for (int i = 0; i < 6; i++)
{
printf("%d ", a[i]);
}
system("pause");
return 0;
}