時間複雜度

2022-08-29 06:21:15 字數 1094 閱讀 6055

定義:時間複雜度是乙個函式,它定性描述了該演算法的執行時間。用 o 表示,不包括這個函式的低階項和首項係數。

計算方法:

1.一般情況下,演算法中基本操作重複執行的次數是問題規模n的某個函式,用t(n)表示,若有某個輔助函式f(n),使得t(n)/f(n)的極限值(當n趨近於無窮大時)為不等於零的常數,則稱f(n)是t(n)的同數量級函式。記作t(n)=o(f(n)),稱o(f(n)) 為演算法的漸進時間複雜度,簡稱時間複雜度。

2.在計算時間複雜度的時候,先找出演算法的基本操作,然後根據相應的各語句確定它的執行次數,再找出 t(n) 的數量級(它的同數量級有以下:1,log2n,n,n log2n ,n的平方,n的三次方,2的n次方,n!),找出後,f(n) = 該數量級,若 t(n)/f(n) 求極限可得到一常數c,則時間複雜度t(n) = o(f(n))。

例:

for(i=1; i<=n; ++i)

}

則有 

,根據上面括號裡的同數量級,我們可以確定 n的三次方 為t(n)的同數量級

則有,然後根據 t(n)/f(n) 求極限可得到常數c

則該演算法的時間複雜度:t(n) = o(n^3) 注:n^3即是n的3次方。

3.在pascal中比較容易理解,容易計算的方法是:看看有幾重for迴圈,只有一重則時間複雜度為o(n),二重則為o(n^2),依此類推,如果有二分則為o(logn),二分例如快速冪、二分查詢,如果乙個for迴圈套乙個二分,那麼時間複雜度則為o(nlogn)。

常見場景時間複雜度:

1.

void test(int n) }}

t(n) = nlogn  時間複雜度為:o(nlogn)

3.

void test3(int

n) }

t(n) = 5logn   時間複雜度為:o(logn) 

4.

void test4(int n)
t(n) = 3n  時間複雜度為:o(1)   

5.

void test5(int n) 

system.out.println("222");}}

t(n) = 0.5n^2 + 0.5n    時間複雜度:o(n^2)  

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

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

時間複雜度 空間複雜度

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

時間複雜度 空間複雜度

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