時間複雜度

2021-09-07 08:23:02 字數 690 閱讀 7831

o(1)在描述演算法複雜度時,經常用到o(1), o(n), o(logn), o(nlogn)來表示對應演算法的時間複雜度, 這裡進行歸納一下它們代表的含義: 

這是演算法的時空複雜度的表示。不僅僅用於表示時間複雜度,也用於表示空間複雜度。 

o後面的括號中有乙個函式,指明某個演算法的耗時/耗空間與資料增長量之間的關係。其中的n代表輸入資料的量。 

比如時間複雜度為o(n),就代表資料量增大幾倍,耗時也增大幾倍。比如常見的遍歷演算法。 

再比如時間複雜度o(n^2),就代表資料量增大n倍時,耗時增大n的平方倍,這是比線性更高的時間複雜度。比如氣泡排序,就是典型的o(n^2)的演算法,對n個數排序,需要掃瞄n×n次。 

再比如o(logn),當資料增大n倍時,耗時增大logn倍(這裡的log是以2為底的,比如,當資料增大256倍時,耗時只增大8倍,是比線性還要低的時間複雜度)。二分查詢就是o(logn)的演算法,每找一次排除一半的可能,256個資料中查詢只要找8次就可以找到目標。 

o(nlogn)同理,就是n乘以logn,當資料增大256倍時,耗時增大256*8=2048倍。這個複雜度高於線性低於平方。歸併排序就是o(nlogn)的時間複雜度。 

o(1)就是最低的時空複雜度了,也就是耗時/耗空間與輸入資料大小無關,無論輸入資料增大多少倍,耗時/耗空間都不變。 雜湊演算法就是典型的o(1)時間複雜度,無論資料規模多大,都可以在一次計算後找到目標(不考慮衝突的話)

dfs時間複雜度 時間複雜度 空間複雜度

時間複雜度的數學證明方法相對比較複雜,通常在工程實際中,會分析就好。注意 只看最高複雜度的運算 int for for for for int遞迴如何分析時間複雜度?常數係數可以忽略,在分析時不用考慮,只要說以上術語即可。主定理 master throrem 上述第四種是歸併排序,所有排序演算法,最...

時間複雜度 空間複雜度

時間複雜度 在電腦科學中,演算法的時間複雜度是乙個函式,它定性描述了該演算法的執行時間。這是乙個關於代表演算法輸入值的字串 的長度的函式。時間複雜度常用大o符號 表述,不包括這個函式的低階項和首項係數。計算時間複雜度的方法 1 只保留高階項,低階項直接丟棄 2 係數不要 3 執行次數是常數是為o 1...

時間複雜度 空間複雜度

演算法複雜度分為時間複雜度和空間複雜度。其作用 時間複雜度是指執行演算法所需要的計算工作量 而空間複雜度是指執行這個演算法所需要的記憶體空間。一 時間複雜度 時間頻度 乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道...