バイナリ検索
規則配列ルックアップ操作の考え方を適用するバイナリ検索。
時間複雑
また、バイナリサーチバイナリ検索として、それは間隔を半分に見えるたびに知られ、このバイナリ特性アルゴリズムの時間計算量は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