簡體   English   中英

什么排序算法的最壞情況時間復雜度為 O(n!)

[英]What sorting algorithm has Worst-Case time-complexity of O(n!)

我瀏覽了整個互聯網,找不到這樣的 wc 時間復雜度排序算法。

而且我相信這不是Bogo 排序,因為它的 wc 不是無窮大

這樣的算法可以是Heap 的算法,在每次交換后通過驗證來檢查數組是否已排序。 Heap 算法對數組的每次修改都需要平均 O(1) 時間,因此它的總體時間復雜度為 O(n.)。

添加驗證以查看數組是否已排序。 如果我們天真地這樣做,每次運行都會花費 O(n) 的時間復雜度,從而使整體時間復雜度為 O(nn)。

但我們可以先計算連續反轉的次數(可以是 0 到 n-1 之間的值)。 這一步的時間復雜度為 O(n)。 鑒於 Heap 算法的時間復雜度更高,這無關緊要。

然后我們可以看到堆算法中的每個交換如何影響該計數。 最多可以有 4 個連續的對受到交換的影響,因此需要恆定的時間來驗證交換如何修改計數。 如果交換后計數為零,我們知道數組已排序。

在最壞的情況下,堆的算法必須在發現計數為零之前通過所有排列 go,因此這表示最壞情況的時間復雜度為 O(n!)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM