JAva二分法はいくつかの実現方法を詳しく解く
1695 ワード
JAva二分法はいくつかの方法を詳しく解く
二分検索(java実装)
にぶんたんさく
アルゴリズム思想:折半検索とも呼ばれ、検索されるシーケンスの秩序を要求する.中間位置の値を検索対象キーワードと比較するたびに、中間位置の値が検索対象キーワードより大きい場合は、前半にこの検索のプロセスをループし、中間位置の値が検索対象キーワードより小さい場合は、後半にこの検索のプロセスをループします.検索されるまで、シーケンスには検索対象のキーワードがありません.
実装:
1.非再帰コード
2.再帰的実現
時間複雑度O(logn)
最初の要素が表示される場所を検索します(要素は重複を許可します).
クエリ要素が最後に表示された場所
読書に感謝して、みんなを助けることができることを望んで、みんなの当駅に対する支持に感謝します!
二分検索(java実装)
にぶんたんさく
アルゴリズム思想:折半検索とも呼ばれ、検索されるシーケンスの秩序を要求する.中間位置の値を検索対象キーワードと比較するたびに、中間位置の値が検索対象キーワードより大きい場合は、前半にこの検索のプロセスをループし、中間位置の値が検索対象キーワードより小さい場合は、後半にこの検索のプロセスをループします.検索されるまで、シーケンスには検索対象のキーワードがありません.
実装:
1.非再帰コード
public static int biSearch(int []array,int a){
int lo=0;
int hi=array.length-1;
int mid;
while(lo<=hi){
mid=(lo+hi)/2;
if(array[mid]==a){
return mid+1;
}else if(array[mid]
2.再帰的実現
public static int sort(int []array,int a,int lo,int hi){
if(lo<=hi){
int mid=(lo+hi)/2;
if(a==array[mid]){
return mid+1;
}
else if(a>array[mid]){
return sort(array,a,mid+1,hi);
}else{
return sort(array,a,lo,mid-1);
}
}
return -1;
}
時間複雑度O(logn)
最初の要素が表示される場所を検索します(要素は重複を許可します).
public static int biSearch(int []array,int a){
int n=array.length;
int low=0;
int hi=n-1;
int mid=0;
while(low
クエリ要素が最後に表示された場所
public static int biSearch(int []array,int a){
int n=array.length;
int low=0;
int hi=n-1;
int mid=0;
while(low
読書に感謝して、みんなを助けることができることを望んで、みんなの当駅に対する支持に感謝します!