2011-01-31 9 views
4

私は現在、アルゴリズムの紹介のための試験のために勉強しています。私は本当に解決できないという質問に出くわしました。問題はこれです。あなたはn個の整数の配列を持っています。最初のm個の要素は偶数であり、残りの要素は奇数である。あなたは、mの値を見つけ出す(最後の偶数のインデックスを見つける)アルゴリズムを書く必要があり、時間複雑さはO(log m)です。未定義の配列をlogrithmic timeで検索する

私はバイナリ検索に似たようなことを考え、単に奇数の場合は左に移動し、偶数でも次のものが奇妙なインデックスを見つけるまでは右に移動しますが、このことはO(log n) O(log m)ではない。

答えて

5

インデックス1から開始し、奇妙なエントリが見つかるまで、インデックスを倍増し続けます。これにより、時間O(log m)のmの上限が得られます。次に、バイナリ検索を実行します。

+0

次に、最悪の場合、バイナリ検索でO(log n)を取ることができます。私が間違っているなら私を訂正してください。 – Chris

+0

@ Abody97 - 私は明らかに、2m以下のm上の以前に決定された上限によって制限された範囲で2分探索を行うことを意味しました。したがって、バイナリ検索もO(log(m))です。 – Henrik

+0

ああ、はい、申し訳ありません。私は 'm 'の上限が' 2m '以下であるという事実を完全に忘れていませんでした。またすみません :) – Chris

関連する問題