2009-11-11 111 views

回答

8

只要你不必依靠二手资料,排序的代码是正确的list头 - 这是大约35线。

看来是修改后的迭代(非递归)合并排序多达25个箱(我不知道是否有这个变种归并排序的具体名称)。与MS VC6来到

-1

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

+5

'list.sort()'不能使用内省排序实现 - 内省排序是不稳定的,而'list.sort()是必需的'是稳定的。 –

+0

说谁? http://www.cplusplus.com/reference/algorithm/sort/ –

+5

@Stephan Eggermont:说C++标准的第23.2.2.4/31节。您正在查看的文档是针对std :: sort,而不是std :: list :: sort。 –

3

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

+0

嗯。 http://www.cplusplus.com/reference/algorithm/sort/允许一个非稳定的排序 –

+1

@Stephan Eggermont:这是关于'std :: sort()',而不是'std :: list :: sort()'。 'std :: sort()'被允许是不稳定的,但是'std :: list :: sort()'但是'std :: list :: sort()'不是。 –

2

STL是P·J·普拉热的版本库(Dinkumware的),并且它std::list<>::sort()使用合并排序。我不知道更高版本的MS软件包。