分析演算法執行時間的一些通用規則
阿新 • • 發佈:2019-01-01
1、迴圈:每一次執行時間*迴圈次數
//迴圈n次
for(i=1;i<=n;i++)
m = m + 2; //時間常數c
總時間 = c * n = cn = O(n)。
2、巢狀迴圈:從內到外進行分析,總的執行時間是所有迴圈規模的乘積
//外層迴圈n次
for(i=1; i<=n; i++){
for(j=1; j<=n; j++){
k= k+1; //時間常數
}
}
總時間 =
3、順序執行語句:每條語句的執行時間相加
x = x + 1;//時間常數
//執行n次
for(i=1; i<=n; i++){
m = m + 2 ; //時間常數
}
//外層迴圈執行n次
for(i=1; i<=n; i++){
//內層迴圈執行n次
for(j=1; j<=n; j++){
k = k + 1;//時間常數
}
}
總時間 =
4、if-then-else條件語句:最壞情況下的執行時間為,條件判斷的時間+最大值(then部分的語句執行時間或else部分的語句執行時間)
//條件:常數
if(length() == 0){
return false;//then部分:常數
}
else {//else部分:(常數+常數)* n
for(int n=0; n<length(); n++){
//條件:常數
if(!list[n].equals(otherList.list[n]))
return false;//then部分:常數
}
}
總時間 =
5、對數級時間複雜度:
如果演算法可以在常數時間把問題的規模按照某個分數(一般是1/2)分解,那麼該演算法的複雜度為O(
for(i = 1; i <= n;)
i = i*2;
以上的變數i,每次都是倍增的,1,2,4,8,…,
k=n
總時間 =
典型問題二分查詢