簡體   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