バイナリサーチのアイデア

バイナリ検索

  規則配列ルックアップ操作の考え方を適用するバイナリ検索。

時間複雑

  また、バイナリサーチバイナリ検索として、それは間隔を半分に見えるたびに知られ、このバイナリ特性アルゴリズムの時間計算量はO(LOGN)です。

ミッド・コンピューティング

途中の値を計算する2つの方法があります。

  • M =(L + H)/ 2
  • M = 1 +(HL)/ 2

  L + hはオーバーフローが発生する可能性が追加、それは加算の結果は、プラスチック範囲で表すことができるよりも大きいです。しかし、LとHは、したがって、HLは、オーバーフローの問題が発生しない追加し、陽性です。したがって、計算の第二の方法を用いることが好ましいです。

バリアント

バイナリ検索は、多くのバリエーションを持つことができ、変異体は、境界値を決定するために注意を払うを達成します。例えば、繰り返しの秩序ある配列の要素は、次のようにキーの左端の位置である見つけます。

public int binarySearch(int []nums,int key){
    int l=0;
    int h=nums.length-1;
    while(l<h){
        int m=l+(h-l)/2;
        if(nums[m]>=key){
            h=m;
        }else{
            l=m+1;
        }
    }
   return l;
}

実装と、次の方法の適切な実現:

  • 発現の複製H H = M
  • サイクリング条件は、L <Hました
  • 最後に、代わりリットルを返す-1

おすすめ

転載: www.cnblogs.com/yjxyy/p/11106095.html