[英]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.