繁体   English   中英

如何证明quicksort的时间复杂度是O(nlogn)

[英]How to prove the time complexity of quicksort is O(nlogn)

我不明白我的教科书中给出的快速排序的时间复杂度是 O(n log n) 的证明。 谁能解释一下如何证明?

Quicksort 的平均情况运行时间为 O(n log n) 的典型论点涉及到在平均情况下每个分区操作将输入划分为两个相等大小的分区。 分区操作需要 O(n) 时间。 因此,递归快速排序实现的每个“级别”的时间复杂度为 O(n)(跨所有分区),并且级别数是很多次您可以迭代地将 n 除以 2,即 O(log n)。

您可以根据您想要的严谨程度以及您的听众的背景和数学成熟度等,以各种方式使上述论证变得严谨。 将上述形式化的典型方法是将 Quicksort 调用的平均情况所需的比较次数表示为递归关系,例如

T(n) = O(n) + 2 * T(n/2)

可以通过主定理或其他方式证明为 O(n log n)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM