std :: sort实现Quicksort吗?

时间:2011-02-18 08:00:34

标签: c++ algorithm stl

  

可能重复:
  which type of sorting is used in the function sort()?

std :: sort是否实现了Quicksort?

5 个答案:

答案 0 :(得分:38)

传统上使用两种算法。

std::sort最有可能使用QuickSort,或者至少是名为IntroSort的QuickSort变体,当递归过深时,它会“退化”为HeapSort

来自标准:

  

复杂性:O(N log(N))比较。

由于稳定性要求,

std::stable_sort最有可能使用MergeSort。但请注意,MergeSort需要额外的空间才能提高效率。

来自标准:

  

复杂性:它最多可以进行N log 2 (N)比较;如果有足够的额外内存可用,则为N log(N)。

我还没有看到std::sort实施TimSort这是有希望的并且已经在Python(事实上是为它制作),Java和Android(迄今为止)中采用。

答案 1 :(得分:1)

它使用quicksort或introsort。

http://www.sgi.com/tech/stl/sort.html

答案 2 :(得分:0)

来自维基百科 -

特定的排序算法不是强制性的,并且可能因实现而异。 Sort Wiki Link

答案 3 :(得分:-3)

我是这么认为的。 std :: list有一个sort方法,或者你可以调用sort,从中获取2个迭代器,开始和结束。

答案 4 :(得分:-4)

因为快速排序(N ^ 2)的最差复杂性很高,而且在链表上实施起来相对困难。我认为使用quicksort不会完成