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语句,会快一些
}
快速排序经典实现
最新推荐文章于 2022-04-06 14:46:46 发布