就地快速排序的时间复杂性是什么?

时间:2011-11-06 01:47:11

标签: quicksort

我知道空间复杂度从O(n)减少到O(log n)。但是时间复杂度怎么样?是否需要与常规版本的Quick Sort执行相同的时间?

2 个答案:

答案 0 :(得分:0)

Quicksort是一种递归的就地排序算法,你对这个问题的意思是什么? 没有非现场版本的quicksort。 由于它是递归除法 - et-impera算法很容易证明,正如你所说空间复杂度至少为O(log n)。如果使用迭代实现,它可以更少,空间补全将是O(1)。

算法的复杂度是平均值O(n log n),在默认实现中是O(n * n)最坏情况。最糟糕的情况是列表已经排序。

然而,合并排序是O(n log n)最坏的情况,但是由于常量较大,通常比快速排序慢。 合并排序的空间复杂度为O(log n)。

答案 1 :(得分:0)

存在运行在O(nlogn)最坏情况下的QuickSort实现,对于你的问题,没有比O(nlogn)最坏情况基于比较的排序更好,并且快速排序为1,证明了O(nlogn)无论如何都不能被打败。

我所知道的QuickSort的唯一实现是就地,但无论如何你可以改进的是quicksort的常量,除此之外你所提到的,所需的空间可以减少到O(1)(迭代版本),和O (logn)在递归版本中。