编辑代码

#include <stdio.h>
#include <stdlib.h>
 
#define  N  10
 
//快速排序法
int quick_sort(int *a, int low, int high)
{
	int i = low;	//第一位
	int j = high;	//最后一位
	int key = a[i]; //基准值
	while (i < j)
	{
					//i 跟 j 的可能情况 只有 i<j i==j
		while(i < j && a[j] >= key)//i<j 是结束条件,如果没有这个,i会大于j 
		{
			j--;//继续走
		}//如果不成立,换位置,把a[j]的数据给a[i]	
		a[i] = a[j];	
		//把i向前移动一下,i++
		while(i < j && a[i] <= key)
		{
			i++;
		}
		//a[i]和a[j]互换数据
		a[j] = a[i];
	}
 
	//跳出循环,将基准值放入数据a[i]中
	a[i] = key;
	//对基准值左边 的所有数据 再次进行快速查找(递归)
	if (i-1 > low) 
	{
		quick_sort(a, low, i-1);
	}
 
	//对基准值右边的所有数据再次进行快速查找(递归)
	if (i+1 < high)
	{
		quick_sort(a, i+1, high);
	}
 
	return 0;
} 
 
int main(int argc, const char *argv[])
{
	int K[] = {11,9,3,20,56,32};	
 
	int i = 0;
	quick_sort(K, 0, 5);
														
	for(i = 0; i < 6; i++)
	{
		printf("%d ", K[i]);
	}
	putchar(6);
	
	return 0;
}