小蚂蚁学习数据结构(13)——快速排序

快速排序的代码实现。

# 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] = {50, 12, 56, 2, 78, -67};
	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; //这里写hign和low是等效的。
}


学PHP的小蚂蚁 博客 http://my.oschina.net/woshixiaomayi/blog



你可能感兴趣的:(数据结构,C语言)