【发布时间】:2020-08-08 20:31:13
【问题描述】:
我已经了解了递归快速排序,最好的情况需要 O(nlogn),最坏的情况需要 O(n^2)。 但我试图找到迭代快速排序的时间复杂度。我知道最好的情况是 O(nlogn) 和 O(n^2)。但我不是为了最好的情况来证明它的合理性。我正在关注本教程
https://www.techiedelight.com/iterative-implementation-of-quicksort/
假设我们有 15 个元素,因此枢轴索引位置将始终位于中间,使其成为理想的最佳情况。但我发现它的条件是“while (!stack.empty())”,即分区数将发生 6 次,不接近 log(n)。如何证明迭代快速排序中最佳情况的时间复杂度是 O(nlogn)。
【问题讨论】:
-
迭代版本使用本地堆栈而不是处理器堆栈。时间和空间复杂度会根据实际实现是一样的。
标签: data-structures time-complexity big-o complexity-theory quicksort