首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

【散分】用STL来实现快速排序,该如何处理

2012-09-13 
【散分】用STL来实现快速排序大家都熟悉快速排序,这是我用vector容器实现的,本着互相学习的原则,抛砖引玉,大

【散分】用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支持[]操作所以是可以随机访问的。
探讨

不是说vector不适合随机访问吗?

[解决办法]
我来给个排序的总结,文章里面是对几个排序算法的具体实现,大家可以一起探讨。
http://blog.csdn.net/furney/article/details/7107145
[解决办法]
list是随机存储的,不能使用[]操作,所以处理起来很麻烦,快速排序适合连续的数据存储。
探讨

我刚刚用LIST来做同样的功能,很难处理
哪位兄弟能够用list来做

[解决办法]
这里用vector没意义,直接可以数组代替,这样更通用

热点排行