簡體   English   中英

是否有時間復雜度為O(n *(log n)^ 2)的算法?

[英]Is there any algorithm with the time complexity of O(n*(log n)^2)?

我知道堆排序的時間復雜度為O(n log n) ,但是我真的想不出一個算法具有O(n(log n) 2 )之一

構建一個超級容易。 最明顯的例子是:

for i in xrange(n * int(log(n, 2) ** 2)):
   // do something O(1)

對於一個更有用的示例,您可以使用Master定理得出滿足您需要的無限次遞歸(任何k都可以工作):

在此處輸入圖片說明


如果您正在尋找一種真正的算法,那么Shellsort的最壞情況下的復雜度為O(n(log n) 2 就地合並排序也是如此

PS您正在尋找的東西的奇特名稱是准線性時間復雜度,其中k = 2。

一個經典(也是最實際的)示例是STL的stable_sort 對數二次因子是由於合並階段本身是遞歸的(這允許整個算法就地運行)。

https://en.wikipedia.org/wiki/動態化傾向於將復雜度增加log n倍,因此,如果對包含基礎成本log n的數據結構的動態版本進行n次查詢,則將獲得n log (n)^ 2

暫無
暫無

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

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