0
public class ArrayUtilities {
    public static void main(String[] args) {
        int[] array1 = { 1, 2, 3, 4, 5, 10, 15, 30, 32 };
        int target1 = 30;
        System.out.println(binarySearch(array1, target1));
    }

    public static boolean binarySearch(int[] array, int target) {
        int left = 0;
        int right = array.length - 1;
        while (right >= left) {
            int middle = (right - left) / 2;
            if (target == array[middle]) {
                return true;
            } else if (target > array[middle]) {
                left = middle - 1;
            } else if (target < array[middle]) {
                right = middle + 1;
            }
        }
        return false;
    }
}

コードを実行するたびに、何も出力されず、エラーも表示されません。理由がわかりません。助けてください!前もって感謝します。

4

1 に答える 1

1

アルゴリズムが正しく実装されていません。

あなたのコードは無限ループを実行しています。

考慮すべき場所:

  1. int middle = (right - left)/2;する必要がありますint middle = (right + left)/2;
  2. それ以外の場合 (ターゲット > 配列 [中央]){ 左 = 中央 - 1; left = middle+1;配列の次の部分で番号を見つける必要があることに注意してください。

  3. 同様に、ここでロジックを検討してください。それ以外の場合 (ターゲット < 配列 [中央]){ 右 = 中央 + 1; }

于 2013-10-31T15:29:58.717 に答える