快速排序

快速排序,说起来很简单那,这几天突然想来练练笔,结果,两个字,失败。

快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

具体可以参考http://baike.baidu.com/view/19016.htm?from_id=2084344&type=syn&fromtitle=快速排序&fr=aladdin

上述参考地址也是里有各种代码,我只是把c++的代码拷贝过来了,哈哈


/* 从小到大排序*/
void Qsort(int a[],int low,int high)
{
	if(low >= high)
	{
		return;
	}

	int first = low;
	int last = high;
	int key = a[first];/*用字表的第一个记录作为枢轴*/
	while(first < last)
	{
		while(first < last && a[last] >= key)
			--last;
		a[first] = a[last];/*将比第一个小的移到低端*/

		while(first < last && a[first] <= key)
			++first;
		a[last] = a[first];/*将比第一个大的移到高端*/
	}

	a[first] = key;/*枢轴记录到位*/
	Qsort(a, low, first-1);
	Qsort(a, last+1, high);/*这里first和last应该相等的,所以应该可以用first*/
}

拷贝过来的目的很简单啊,就是为了某天要用的时候直接翻自己这里就可以了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值