2017-04-14 7 views
0

ちょっと、私はバイナリ検索の比較数を見つけたいと思っています。私はこの方法で比較回数を数えました。配列には数値が含まれていますが、numsearchが見つからないため、常に-1を返します。 これは私の方法です..カウントは、比較の数を参照してください。バイナリ検索方法のループ数

public static int BinarySearch (int n, Integer[] ran) { 
    int low = 0; 
    int high = ran.length-1; 
     int count = 0; 
    int middle; 
    while (low<=high) { 

     count++; 
     middle = (high - low)/2; 
     if (ran[middle] == n) { 
      return count; 
     } 
     else if (ran[middle] > n) { 
      high = middle - 1; 

     } 
     else { 
      low = middle + 1; 

     } 

    } 


    return -1;   
    } 

答えて

0

変更return -1からreturn countへの最後の行。

+0

私はそれを試みたが、それはどちらか返し2または私はそれを手動で停止する – Dom

+0

コード自体を有するループで継続のいずれか本当に正しくありません。おそらく、あなたの実装を見直すべきでしょう。私は 'middle =(high-low)/ 2;をmiddle =(high + low)/ 2;に変更します。 – john16384

+0

あなたに仲間に感謝します、私はコードを変更しました。しかし、それは私に5または4のどちらかを与えます – Dom

0
public static int BinarySearch(int n, Integer[] ran) { 
    int low = 0; 
    int high = ran.length - 1; 
    int count = 0; 
    while (high >= low) { 
     count++; 
     int middle = (low + high)/2; 
     if (ran[middle] == n) { 
      return count; 
     } 
     if (ran[middle] < n) { 
      low = middle + 1; 
     } 
     if (ran[middle] > n) { 
      high = middle - 1; 
     } 
    } 
    return count; 
} 
+0

私はソートされた配列は、順番に並べ替えるので、 ; } if(ran [middle] Dom