私は配列のバイナリ検索をしています。しかし、何かが外れている。ターゲットが見つからず、配列内にあるかのように-1を返します。 例:バイナリ検索が機能するなぜ私は555でキーを入れたときに、それが正しいインデックスを返しますが、私は8で、以下の例でしようとすると、それは-1を返します。..エラーを与える配列のバイナリ検索
public class bSearch {
public static void main(String[] args) {
int[] nums = {9,5,2,5,7,8,3,22,555};
int key = 8;
System.out.println(searchForNum(nums,0,nums.length-1,key));
}
private static int searchForNum(int[] arr,int first, int last, final int target) {
int middle= (first+last)/2;
if(last < first) {
return -1;
}
if(arr[middle]== target)
return middle;
else if(target < arr[middle]) {
return searchForNum(arr,first,middle-1,target);
} else {
return searchForNum(arr,middle+1,last,target);
}
}
}
あなたのIDEのデバッガでコードをステップ実行しましたか? –
バイナリ検索は、リスト/配列がソートされている場合にのみ有効です。そうでない場合はソートできません。 –