快速排序经典实现

template<class T>
void sort(T a[],T st,T ed)
{
	if(st < ed)   //先设一个开关优化,会更快一些
	{ 
		T tmp = a[st], i = st, j = ed;
		while(i < j)
		{ 
			while (a[j] > tmp && i < j) --j;  //C++在判断时,会打开编译开关,把a[j]与tmp放在前比较,这样会更快一些~~
			if(i < j) 
			  a[i++] = a[j]; //ps:j-- ,i++(下行)比不了--j,++i快
			while (a[i] < tmp && i < j) ++i;//注意:这里用的不是">="或"<="而是">""<,事实证明,前者会增加交换的次数,做无用功~~~
			if(i < j) 
			  a[j--] = a[i];
		}  //while
		a[i]=tmp;
		sort(a,st,i-1);
		sort(a,i+1,ed);
	}  //if
	//这里不用return语句,会快一些
}  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值