快速排序经典实现
2012-04-18 15:15
225 查看
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语句,会快一些 }
相关文章推荐
- 经典排序算法(一)--冒泡排序、快速排序java实现
- 快速排序的经典实现
- C#实现所有经典排序算法(选择排序,冒泡排序,快速排序,插入排序,希尔排序)
- 经典快速排序,linux纯C实现。注意swap方法,并且这个算法还需再敲写15篇。
- 快速排序 c++ 实现
- 快速排序的递归实现
- 快速排序的实现
- 白话经典算法系列之六 快速排序 快速搞定
- 快速排序java实现
- Java实现冒泡排序、快速排序、选择排序、插入排序和归并排序
- 快速排序,归并排序,堆排序python实现
- 算法实战java实现快速排序
- 冒泡、插入、快速、选择排序的java实现
- 快速排序的两种实现方式(Java)
- 快速排序java实现
- 算法外功修炼之一 快速排序的Java实现
- 白话经典算法系列之六 快速排序 快速搞定
- 白话经典算法系列之五 归并排序的实现
- C语言分别实现冒泡排序、快速排序、选择排序
- 4、 排序有哪几种方法?请列举。并用JAVA实现一个快速排序.