与えられたプログラムに対して、時間の複雑さは何か。私の理解へ与えられた関数の時間複雑さを求める
int count = 0;
for(int i = n; i > 0; i /= 2)
{
for(int j = 0; j < i; j++)
{
count++;
}
}
i
ループを分割し、征服し、それゆえO(logn)
あるとj
ループがO(n)
あるので、それはO(nlogn)
する必要があります。
ただし、正解はO(n)
です。なぜ誰かが説明できますか?
をそして、あなたの質問は... –
最悪の場合はO(n)のようにはい、それはO(n)となりますです – XPLOT1ON
複雑さを取り除くための銀色の弾丸はありません。時にはリテラル式も記述できません。この場合、あなたは正しいです、 'O(N * lg2N)'です。 –