根据我的说法,时间复杂度应为O(nlogn),因为外循环工作直到n / 2 ^ k = 1且内循环工作n次。谁能告诉我我是否正确。
while(n){
j=n;
while(j>1){
j-=1;
}
n/=2;
}
答案 0 :(得分:8)
内部循环执行 reg value
0 2 for $20 10.0
1 4 for $24 6.0
2 2 for $30 15.0
3 Get $10 Cash 14.0
4 3 for $30 10.0
次迭代,外部每次迭代将n
除以2,因此内部循环共有n
个迭代,时间复杂度为n + n/2 + n/4 + ... = 2n
,而不是O(n)
。