演算法的時間複雜度

2022-06-26 05:27:10 字數 1571 閱讀 6473

一、時間頻度

1.基本介紹:

時間頻度:乙個演算法花費的時間與演算法中語句的執行次數成比例,哪個演算法中語句執行的次數多,它花費時間就多。乙個演算法中的語句執行次數稱為語句頻度或時間頻度。記為t(n)。在計算時間頻度時,常數項和低次項可以忽略,因為隨著n變大,時間頻度會無限接近。

舉例說明:計算1-100所有數字之和,我們設計兩種演算法。

演算法1:

int total=0;

int end=100;

for(int i=1;i<=100;i++)

n=100

t(n)=n+1=101

分析:迴圈從1-100一共100次,需要再判斷一回才能退出。

演算法2:total=(1+end)*end/2(這個是等差數列求和公式:(a1+an)*n/2)一步到位 t(n)=1

二、時間複雜度

1.時間複雜度:

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

2)t(n)不同,但時間複雜度可能相同,如t(n)=n2+7n+6與t(n)=3n2+2n+2,他們的t(n)不同,但時間複雜度相同,都為o(f(n))。

3)計算時間複雜度的方法

√ 常用常數1代替執行時間中的加法常數 如 t(n)=n2+7n+6==> t(n)=n2+7n+1

√ 修改後的執行次數函式中,只保留最高端項  t(n)=n2+7n+1==> t(n)=n2

√ 去除最高端項的係數  t(n)=n2==> t(n)=n2==>o(n2)

2.常見的時間複雜度:

1)無迴圈條件下常數階 o(1)    最穩定

2)對數階 如o(log2n)

3)線性階 o(n)

4)線性對數階 o(nlog2n) —線性階*對數階

5)平方階 o(n2)    線性階*線性階   兩層n迴圈

6)立方階 o(n3)   三層n迴圈

7)k次方階 o(nk)

8)指數階 o(2n)    執行慢(指數**)

說明:○常見的時間演算法時間複雜度從(1)到(8)越來越複雜,隨著n的增大,時間複雜度不斷增大,演算法的執行效率越來越低(o(1)2n)2n)2) 3) k)n)n))—簡單記法:長對冪指階

○我們應該盡可能避免(8)指數階的演算法

3.時間複雜度的規則

1)加法規則  t(n)=t1(n)+t2(n)=o(f(n)+o(g(n)=o(max(o(f(n),o(g(n))  多項式相加,只保留最高的階,且係數變為1

2)乘法規則  t(n)=t1(n)*t2(n)=o(f(n))*o(g(n))=o(f(n)*g(n))  多項相乘,都保留

三、平均時間複雜度與最壞時間複雜度

1)平均時間複雜度是指所有有可能的輸入例項均以等概率出現的情況下,該演算法的執行時間

2)最壞情況下的時間複雜度是在演算法在任何輸入例項上執行的界限,就保證了演算法的執行時間 不會比最壞情況更長

演算法時間複雜度空間複雜度

演算法 是解決某一類問題的通法,即一系列清晰無歧義的計算指令。每個演算法只能解決具有特定特徵的一類問題,但乙個問題可由多個演算法解決。乙個演算法應該有以下五個方面的特性 比較演算法的優劣我們從兩個維度去進行考量 時間 空間 時間複雜度,空間複雜度 找出基本語句 演算法中執行次數最多的那條語句就是基本...

演算法 時間複雜度 空間複雜度

1 if i 1 2 a 1 result 3 4 result n 2 result 1000 1000 3 array.push a array.pop 4 map.set 1,1 map.get 1,1 在計算複雜度的時候,o 1 一般會被忽略。1 for let i 0 i n i 2 wh...

演算法的時間複雜度 空間複雜度

時間複雜度和空間複雜度是度量演算法效率的常用指標 事後統計,不常用 事前統計影響因素 演算法策略 問題規模 程式語言 質量 機器執行指令的速度 撇開軟硬體的影響,演算法執行工作量的大小只依賴於問題的規模 通常用整數n表示 乙個演算法是由控制結構 順序,分支,迴圈三種 和原操作 指固有資料型別的操作 ...