So mache ich eine binäre Suche auf einem Array. Aber etwas zu sein. Es gibt -1 zurück, als ob das Ziel nicht gefunden wird, aber es befindet sich im Array. ab: wenn ich den Schlüssel bei 555 gesetzt gibt es den richtigen Index, aber wenn ich mit dem Beispiel unten versuchen, mit 8 es -1 zurück ..binäre Suche auf einem Array mit Fehlern
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);
}
}
}
Haben Sie Schritt durch den Code in Ihrem IDE-Debugger? –
Eine binäre Suche funktioniert nur, wenn Ihre Liste/Array sortiert ist, andernfalls nicht. –