quick_sort.c:
#include <stdio.h>
#define ARRAY_N 6
int array[ARRAY_N]={2, 3 , 4, 5, 6, 1};
int show_list(int array[], int n)
{
int i = 0;
for (i=0; i < ARRAY_N; i++)
{
printf("%5d", array[i]);
}
printf("\n");
return 0;
}
int quick_sort(int array[], int low, int high)
{
int i = 0;
int j = 0;
int tmp = 0;
if (low < high)
{
i = low;
j = high;
tmp = array[i];
while (i < j)
{
while (i < j && array[j] > tmp)
{
j--;
}
if (i < j)
{
array[i++] = array[j];
}
while (i < j && array[i] < tmp)
{
i++;
}
if (i < j)
{
array[j--] = array[i];
}
}
array[i] = tmp;
quick_sort(array, low, i-1);
quick_sort(array, i+1, high);
}
return 0;
}
int main(void)
{
show_list(array, ARRAY_N);
quick_sort(array, 0, ARRAY_N - 1);
show_list(array, ARRAY_N);
return 0;
}
测试结果:
排序前:2 3 4 5 6 1
排序后:1 2 3 4 5 6