1.はじめにバイナリ検索
:#バイナリ検索説明して ターゲットを見つけ、順序集合からのデータの規則的な収集のためのバイナリ検索を。見つかったターゲット要素が発見されるまで、すべての時間の目標値は、中央の素子間隔と比較して、間隔は、前見つけるために半分に削減されます。0狭い間隔又は #バイナリサーチ実装注: 1 。ループ終了条件 低 <= ハイ 2 .MID値 従来の方法で:MID =(ハイ+低)/ 2 改良された方法:MID =低+(高-低) / 2 究極の方法:MID =低+((高-低)>> 1) 3。.lowと高い更新 ロー = MID + 1 ハイ =半ば1 #バイナリサーチシナリオの制限: バイナリ検索順序依存テーブル構造(アレイ) 2 。バイナリサーチのために配列決定されたデータ 3のデータ量が使用バイナリ探索するのに適した、小さすぎません
2.コードの実装
パッケージcn.anan.util / ** *バイナリ探索学習 * / オブジェクトBinarySearch { DEFメイン(:配列[文字列]引数を):単位 = { // 配列を定義する、アレイは、規則正しい配列である ヴァルARR =配列(0、 1,2,3,4,5,6,7,8,9,10 ) // 7:目標の数字を定義 ヴァル目標は、= 7。// 配列の目標数値インデックス位置を見つける // 、定義された検索場所を終了位置、位置指標バイナリ VARスタート= 0 VAR終了 = arr.length 1- VAR mIDを = 0 // ループ処理しばらく(スタート<= 終了){ // 中間位置を計算 mIDを=(スタート+エンド)/ 2 // ため比較IFを ==(ゴール ARR(MID)){ のprintln( "ターゲットデジタル目標:" +ゴール+ "配列インデックスの位置に" + MID) リターン } // 宛先番号がデジタルアレイ中間位置よりも小さい場合 IF(目標< ARR(MID) ){ // 終了位置等しい。1ミッド エンド-MID。1 = } // 数は、アレイの中間デジタルの位置目標より大きい場合 IF(目標は> ARR(MID)){ // 位置が同じで開始する。1 +中間 スタート+ = mIDを1 } } } }