std :: sort是否实现了Quicksort?
答案 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。
答案 2 :(得分:0)
来自维基百科 -
特定的排序算法不是强制性的,并且可能因实现而异。 Sort Wiki Link
答案 3 :(得分:-3)
我是这么认为的。 std :: list有一个sort方法,或者你可以调用sort,从中获取2个迭代器,开始和结束。
答案 4 :(得分:-4)
因为快速排序(N ^ 2)的最差复杂性很高,而且在链表上实施起来相对困难。我认为使用quicksort不会完成