我知道空间复杂度从O(n)减少到O(log n)。但是时间复杂度怎么样?是否需要与常规版本的Quick Sort执行相同的时间?
答案 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)在递归版本中。