快速排序经典实现

来源:互联网 发布:淘宝客服搞笑欢迎语 编辑:程序博客网 时间:2024/05/20 07:36
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];}  //whilea[i]=tmp;sort(a,st,i-1);sort(a,i+1,ed);}  //if//这里不用return语句,会快一些}  

原创粉丝点击