演算法時間複雜度 一

2021-07-31 06:46:04 字數 1116 閱讀 4964

演算法時間複雜度的定義:在進行演算法分析時,語句總的執行次數t(n)是關於問題規模n的函式,進而分析t(n)隨n的變化情況並確定t(n)的數量級。演算法的時間複雜度記作:t(n)=o(f(n))。f(n)是問題規模n的某個函式。(執行次數==時間)

如何分析乙個演算法的時間複雜度(o階推導法)

—用常數1取代執行時間中所有的加法常數。

—在修改後的執行次數函式中,只保留最高端項。

—如果最高端項存在且不為1,則去除與最高項相乘的常數。

常數階

int sum=0,n=100;

printf("......");

printf("......");

printf("......");

printf("......");

printf("......");

sum=(1+n)*n/2;

o(7)?  錯誤

用1取代所有加法常數,所以時間複雜度為o(1)

線性階

int sum=0,n=100;

for(int i=0;i

o(n)

平方階

int i,j,n=100;

for(i=0;i

o(n^2)

int i,j,n=100;

for(i=0;i

當i=0時,內迴圈執行n次,i=1時,內迴圈執行n-1次,i=n-1時,執行1次。所以總的執行次數為

n+n-1+...+2+1=n(n+1)/2=n^2/2+n/2

根據o階推導法得:o(n^2)

對數階

int i=1,n=100;

while(i

由於2^x=n,x=log(2)n (以2為底n的對數)

所以時間複雜度為o(logn)

演算法 時間複雜度(一)

概念簡述 明確 舉例分析 理論分析 演算法複雜度分為時間複雜度和空間複雜度。時間複雜度是指執行演算法所需要的計算工作量,在計算機 科學中,演算法的時間複雜度是乙個函式,它定性描述了該演算法的執行時間,是乙個關於代表演算法輸入值 的字串的長度的函式。時間複雜度常用大o符號表述,如 o 1 o n o ...

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

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

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

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...