JAva二分法はいくつかの実現方法を詳しく解く

1695 ワード

JAva二分法はいくつかの方法を詳しく解く
二分検索(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 
 

読書に感謝して、みんなを助けることができることを望んで、みんなの当駅に対する支持に感謝します!