STL的list链表排序

来源:互联网 发布:阿里云服务器加硬盘 编辑:程序博客网 时间:2024/06/10 22:07

在MSVC8.0里,STL给std::list提供了两种排序方法,一个是std::list的sort成员函数,一个是<algorithm>里的std::stable_sort排序函数。

 

 

这两种方法的实现是不同的,list::sort()成员函数是针对list容器定制的排序方法,而stable_sort是针对bidirectional_iterator_tag双向迭代器的通用排序方法。按说对list进行排序,前者应快过后者,但是实践结果却是后者明显快过前者。

 

 

 

在MSVC8.0里运行上面的代码,可以发现,stable_sort采用的快速排序法,比list::sort的mergesort法,要快出很多。

因此质疑list::sort的实现方法。