一、什么是復雜度
1.算法的概念
算法是特定問題求解步驟的一種描述。
2.復雜度
復雜度描述算法執行時間與數據規模的增長關系。用時間復雜度和空間復雜度來度量。
二、時間復雜度
1.什么是時間復雜度
T(n)=O(fn) 執行時間與執行的總次數成正比
T(n):執行時間
fn:執行的總次數
2.分析的方法
加法法則
總復雜度等於執行循環次數最多的那段復雜度。
T(n)=T1(n)+T2(n)=O(fn)+O(gn)=O(max(fn),g(n))
int sum=0 for(int i=0;i<n;i++){ sum+=i; } for(int j=0;j<100;j++){ sum+=j; } //時間復雜度O(n)
乘法法則:對於嵌套函數,總復雜為內外循環的乘積。
T(n)=T1(n)*T2(n)=O(fn)*O(gn)=O((fn)*g(n))
for(int j=0;j<=n;j++){ for(int i=0;i<=n;i++){ sum+=i; } } // 時間復雜度O(n^2)
count=0; for(k=1;k<=n;k*2){ for(j=1;j<=n;j++){ cpunt j++; } } //內循環的條件與外循環的條件的變量無關,各自獨立 //內循環復雜度為O(n) //外循環復雜度:設執行了t次,循環條件k<=n,增量定義為k*2,當循環次數滿足2ⁿ<=n,即t<=㏒₂ⁿ //總復雜度:O(n*㏒₂ⁿ)2014年考研真題
三、空間復雜度
表示存儲時間和數據規模之間的增長關系。
S(n)=O(g(n))
S(n):算法所耗費的存儲空間
算法原地工作是指算法所需輔助空間為常量,O(1)