無駄を省く手法の1つが、「2分探索法(binary search)」というアルゴリズムです。2分探索法は、検索するデータが中央値より高いか低いかを判断して探索します。なお、検索する配列の中身は、ソートしてあることが前提です。リスト1の配列を参考に、手順を示します。
手順1:配列の探索範囲の下限(low)と上限(high)をセットします。例題では、左側が「0」で、右側が「10」ですね。
手順2:中央値(mid)の配列要素を算出し、下限≦上限が成立する間、繰り返します。つまり、中央値とは、下限と上限の配列要素を足し、2で割った値です。リスト1で、1回目は下限の配列要素が「0」、上限が「10」なので、中央値は(0+10)/2=5となります。
上記の計算を、「下限≦上限が成立する間まで繰り返す」、すなわち下限>上限となったら終了です。探索を続けていくと、下限と上限の関係が逆転するタイミングが現れます。
手順3:下記の3つのステップで、検索処理を実施する。
目的とするデータにヒットしなかった場合、「上限の配列要素」や「下限の配列要素」を1つ加算、減算して、少しでも早く見つかるようにしているのかミソです。大体のアルゴリズムが分かったと思います。では、実際に問題に取り組みましょう。
Copyright © ITmedia, Inc. All Rights Reserved.