for(int i = 1; i < n; i = i ∗ 2){
for(int j = 0; j < n; j++){
if(i == j){
for(int k = 0; k < n; k++){
// Do something elementary
}
}else{
// Do another elementary thing
}
}
}
我正在做一些練習,有人可以幫我弄清楚上述算法的Θ嗎?我明白,如果它只是兩個外部嵌套循環,則時間複雜度應該是Θ(nlogn)。但我不知道如何處理if-else語句。提前謝謝了!嵌套循環的時間複雜度
提示1:在這個循環中「i == j」有多少次?提示2:你能把最裏面的循環從中間循環中提出來,這樣程序就變得更容易分析了嗎? – 2014-11-08 10:08:51
謝謝。我一直在考慮有多少次我== j,但沒有結論.. – stillAFanOfTheSimpsons 2014-11-08 10:13:03
@matheburg通常假定比較和分支需要O(1)次。 – 2014-11-08 10:14:26