定大小整形数组的快速排序实现

#include <stdio.h>

int partition(int (&a)[11],int low,int high)
{
	a[0] = a[low];
	int pivotkey = a[low];
	while(low<high)
	{
		while (low<high && a[high]>=pivotkey)
		{
			--high;
		}
		a[low] = a[high];

		while (low<high && a[low]<=pivotkey)
		{
			++low;
		}
		a[high] = a[low];
	}
	a[low] = a[0];
	return low;
}

void qqsort(int (&a)[11],int low,int high)
{
	if (low<high)
	{
		int pivotloc = partition(a,low,high);
		qqsort(a,low,pivotloc-1);
		qqsort(a,pivotloc+1,high);
	}
}

int main(void)
{
	int array[11] = {10000,6,76,1,6,67,37,43,31,376,34};

	qqsort(array,1,10);//array[0]被忽略掉了,不参与排序
	for (int i=1;i<11;i++)
	{
		printf(" %d",array[i]);
	}
	printf("\n");

	return 0;
}

 

posted @ 2013-06-17 16:15  xiaowenchao  阅读(240)  评论(0)    收藏  举报