數據結構(1) 時間複雜度

引言:時間複雜度是判斷一個程序算法是否可行的方法,在多個同一個問題的算法中,可以通過時間複雜度來挑選優秀的算法

1、需要理解要點:問題的規模和語句頻度,數量級O()

問題的規模:問題的規模指的是算法求解問題輸入量的多少,可以用n表示

語句頻度:一條語句重複執行的次數

在數據結構中,把一個算法的時間複雜度用數量級'O()'來表示,它不是一個確定值,只是一個數量級,例如1,n,n^2等

2.語句頻度最高的,其數量級一般爲時間複雜度,如下:

int a =0;
for(int i=0;i<=n;i++){      //語句頻度爲(n+1)
    for(int j=0;j<=n;j++){  //語句頻度爲 n*(n+1)
        a++;                //語句頻度爲 n^2
    }
}

以上時間複雜度爲O(n^2),因爲最大的語句頻度的數量級就是n^2

int x = n;
int y = 0;
while(x>=(y+1)*(y+1)){
    y++;
}

一開始可能不知道怎麼下手,但其實只要算出語句頻度最高的那個數量級便可,這裏的話y++語句頻度最高,並且在x>=(y+1)*(y+1)時執行,因爲y每次都是遞增1的,因此

n=(y+1)*(y+1);   y= √n -1

所以時間複雜度爲O(√n

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章