練習 分析時間複雜度

2021-09-07 10:19:31 字數 1178 閱讀 4793

例1. 分析以下演算法的時間複雜度。

voidf(

int n)

}

分析:演算法中while迴圈的if條件包含的p=p*f語句可以不考慮,因為它執行的次數不超過d=d/2語句的執行次數。

基本運算是語句d=d/2(或f=f*f),設其執行時間為t(n

)t(n)

t(n)

,則有d=n

/2t(

n)

>0≥

1,2t

(0)≤

nd=n/2^>0\geq 1,2^\le n

d=n/2t

(n)>0≥

1,2t

(0)≤

n,即t(n

)≤lo

gn=o

(log

n)

t(n)\leq logn=o(logn)

t(n)≤l

ogn=

o(lo

gn)

例2.分析下列演算法的時間複雜度

字串逆置(順序表逆置)

void

reverse

(char

* p)

}

基本語句為ch=p[i],頻數為n/2,時間複雜度為o(n

)o(n)

o(n)

。例3.分析下列演算法的時間複雜度

從二維整型陣列a[m][n]中查詢出最大元素所在的行、列下標。

void

find

(int a[m]

[n],

int m,

int n,

int& lin,

int& col)}}

}

時間複雜度為o(m

×n

)o(m\times n)

o(m×n)

。例4.分析下列演算法複雜度。

void

func

(int n)

}

時間複雜度為o(n

12

)o(n^)

o(n21​

)。

複雜度分析 時間複雜度 空間複雜度

執行效率是演算法的乙個重要的考量指標,演算法的執行效率用時間 空間複雜度來衡量。今天我們來學習一下複雜度的分析。通常我們可以通過執行程式來獲得演算法的真正的執行時間,這種方法我們可以稱為事後統計法,但這種方法得到的是具體的資料,測試結果很依賴測試環境,而且受資料規模影像最大。因此,我們需要乙個不需要...

複雜度分析 時間複雜度分析和空間複雜度分析

其實,只要講到資料結構與演算法,就一定離不開時間 空間複雜度分析。而且我個人認為,複雜度分析是整個演算法學習的精髓,只要掌握了它,資料結構和演算法的內容基本上就掌握了一半。1.時間複雜度分析 對於剛才羅列的複雜度量級,我們可以粗略地分為兩類,多項式量級和非多項式量級。其中,非多項式量級只有兩個 o ...

複雜度分析(上)時間複雜度 空間複雜度

為了肉眼 實時 快速地來分析出 的複雜度,我們需要乙個不用具體的測試資料來測試,就可以粗略地估計演算法的執行效率的方法。時間複雜度 空間複雜度 表示演算法的執行時間與資料規模之間的增長關係。每行 對應的 cpu 執行的個數 執行的時間都不一樣,但是,我們這裡只是粗略估計,所以可以假設每行 執行的時間...