【问题标题】:which sorting algorithm is used for std::list's sort member function? [duplicate]std::list 的排序成员函数使用哪种排序算法? [复制]
【发布时间】:2010-07-22 07:16:30
【问题描述】:

可能重复:
Which sorting algorithm is used by STL’s list::sort()?

std::list 排序可以使用哪种排序算法?

【问题讨论】:

标签: c++ algorithm list stl


【解决方案1】:

它是定义的实现。但是,它必须遵循这些限制(§23.2.​2.4):

稳定:保持等价元素的相对顺序。
复杂性:大约 NlogN 次比较,其中 N == size()。

所以O(nlog n) 是一个稳定的排序。

【讨论】:

  • 感谢 GMan。除了归并排序,还有哪些算法可以使用?
  • @Davit:我认为 Quicksort 可以写成稳定的,但如果我没记错的话,它会以这种方式失去一些性能。 (即使它的最坏情况是O(N^2),它的平均情况也符合要求。)不过你是对的,我认为我使用的每个实现都使用合并排序。 (对于不稳定的排序,Introsort。)
  • 查看维基百科的stable sorts,我有点震惊地发现Quicksort 和Shellsort 不在其中。这真的不会留下很多。
  • 如果我没记错的话,合并排序通常用于稳定排序和介绍排序(以缓解快速排序的O(n^2) 最坏情况)...
猜你喜欢
  • 2013-08-28
  • 2010-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多