私はInterview Bitで時間複雑度の問題を解決していました。 次のコードの時間複雑度はどのようにO(n)ですか?
この質問に対する正解はO(N)です。しかし、私によれば、答えはO(NlogN)でなければなりません。最初の "forループ"の複雑さはO(logN)でなければならない。というのは、変数iが各反復で2で割られ、ループ変数が2で乗算されるか、または2で除算されるときはいつでも、時間の複雑さはO (logN)。さて、2番目の "forループ"について、複雑さはO(N)でなければならないので、最終的な複雑さはO(N * logN)でなければなりません。
誰でも私が間違っている場所を説明できますか?
O(NlogN)はO()が上限であるため、実際には_wrong_ではありません。 O(N)よりも情報量が少ないです。 – Gassa
あなたが間違っていたのは、外側のループがO(log N)回入力されているときに、アルゴリズム全体がO(?* log N)を取っているという考えを提供すると、内側ループはcN時間の平均いくつかの定数cは、外側のループの各実行です。 IVladの答えが述べるように、あなたは幾何学的なシリーズにつながる数学をする必要があります。 – moreON