【c】快速排序

193 阅读1分钟
#include <stdio.h>

int quick(int *pa, int low, int high)
{
	if(low > high)	
		return 0;
	int i = low;
	int j = high;

	int key = pa[i];

	while(i < j){
		while(i < j && pa[j] > key)
			j--;
		if(i < j){
			pa[i] = pa[j];
			i++;
		}
		while(i < j && pa[i] < key)
			i++;
		if(i < j){
			pa[j] = pa[i];
			j--;
		}
	}
	pa[i] = key;
	quick(pa, low, i-1);	
	quick(pa, i+1, high);
}
int main()
{
	int a[10] = {1, 22, 13, 4, 25, -16, 37, 18, -9, 0};

	quick(a, 0, 9);

	int i;
	for(i=0; i<(sizeof(a) / sizeof(a[0])); i++){
		printf("%d   ", a[i]);	
	}	
	printf("\n");

	return 0;
}