2
所以,我真的不會得到大O符號。我的任務是確定這個代碼段的「O值」。與決定大O符號混淆?
for (int count =1; count < n; count++) // Runs n times, so linear, or O(N)
{
int count2 = 1; // Declares an integer, so constant, O(1)
while (count2 < count) // Here's where I get confused. I recognize that it is a nested loop, but does that make it O(N^2)?
{
count2 = count2 * 2; // I would expect this to be constant as well, O(N)
}
}
將O-notation想象成「我能以多快的速度」問題。並且它爲嵌套操作乘法複合。外循環:在'n'複雜度中'count''到那裏。內部循環:'count2'''在那裏''logN'的複雜性(每次迭代你都加倍)。這是'O(nlogn)' – WhozCraig
好的WhozCraig,這是有道理的。謝謝你的幫助。 – user2896852
@WhosCraig - 爲了澄清,大O不*嚴格地關於速度,或者「我到那兒速度有多快」。它還可以描述功能的空間複雜性等等。 – GraphicsMuncher