検索アルゴリズム(バイナリサーチ)

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 
      } 
    } 
  } 

}

 

おすすめ

転載: www.cnblogs.com/itall/p/11210642.html