【散分】用STL来实现快速排序
大家都熟悉快速排序,这是我用vector容器实现的,本着互相学习的原则,抛砖引玉,大家分享下用其它容器如何来实现同样的功能:
- C/C++ code
int Partition(vector<int> &lInt, int low, int high) { int Pivot = lInt[low]; while (low < high) { while(low != high && lInt[high] > Pivot) { high--; } if (low != high) { lInt[low++] = lInt[high]; } while (low != high && lInt[low] < Pivot) { low++; } if (low != high) { lInt[high--] = lInt[low]; } } lInt[low] = Pivot; return low; } void QuickSort(vector<int> &lInt, int low, int high) { int pivotops;//划分后基准记录的位置 if (low < high) { pivotops = Partition(lInt, low, high); QuickSort(lInt, low, pivotops-1); QuickSort(lInt, pivotops+1, high); } } int _tmain(int argc, _TCHAR* argv[]) { int myints[] = {75,23,65,42,13}; vector<int> mylist (myints,myints+5); QuickSort(mylist, 0, 4); } http://blog.csdn.net/foshanzhuifeng/article/details/7409164
[解决办法]
[解决办法]
既然都用 stl了,sort 方法为什么 不用 ?
[解决办法]
自己实现也不错,stl里有快速排序的算法
[解决办法]
多实践 你会进步很快~ 最好还是了解下每个容器的特性 有些用快排确实不适合~
[解决办法]
不是说vector不适合随机访问吗?
[解决办法]
vector支持[]操作所以是可以随机访问的。
[解决办法]
我来给个排序的总结,文章里面是对几个排序算法的具体实现,大家可以一起探讨。
http://blog.csdn.net/furney/article/details/7107145
[解决办法]
list是随机存储的,不能使用[]操作,所以处理起来很麻烦,快速排序适合连续的数据存储。
[解决办法]
这里用vector没意义,直接可以数组代替,这样更通用