Microsoft的STL :: list :: sort()使用哪种排序算法?

时间:2009-11-11 20:39:10

标签: algorithm visual-c++ sorting stl

注意:我不小心发布了this question而未指定我正在使用哪个STL实现,我觉得它无法真正更新,因为它会使大多数答案过时。 < / p>

所以,正确的问题是 - 假设我使用的是Microsoft Visual C ++的STL库,在下面的代码中使用了哪种排序算法?:

list<int> mylist;

// ..insert a million values

mylist.sort();

4 个答案:

答案 0 :(得分:8)

因此您不必依赖秒针信息,排序代码就在list标题中 - 它大约是35行。

似乎是一个修改后的迭代(非递归)合并排序,最多有25个bin(我不知道这个合并排序变量是否有特定的名称)。

答案 1 :(得分:3)

至少在最近的版本中(例如VC ++ 9.0 / VS 2008),MS VC ++使用合并排序。

答案 2 :(得分:2)

MS VC6附带的STL是P. J. Plauger的库版本(Dinkumware),它在std::list<>::sort()中使用了merge-sort。我不知道MS的软件包的更高版本。

答案 3 :(得分:-1)

据我所知,它是Introsoft:http://en.wikipedia.org/wiki/Introsort