Ich muss einen rekursiven binären Suchalgorithmus für ein Integer-Array in aufsteigender Reihenfolge (d. H. 1,2,3,4...
) implementieren.Wie implementiert man einen rekursiven binären Suchalgorithmus?
Das Array Ich habe enthält die folgenden Zahlen:
0 0 0 0 0 0 0 1 2 2 3 3 3 3 5 6 7 7 7 9
jedoch meine aktuelle Implementierung von binären Suche findet nur die Zahlen rechts von 3. Aus irgendeinem Grund ist es nicht findet 9, 7 , 6 und 5.
unten ist mein Code:
private int srchHelper(int[] array, int first, int last, int x) {
if (first > last) return - 1;
int mid = (first + last)/2;
if (array[mid] == x) {
return mid;
}
if (array[mid] < x) {
return srchHelper(array, (mid + 1), last, x);
}
else return srchHelper(array, (mid - 1), last, x);
}
Ich habe diese Frage gestern gesehen, und etwa 3 Leute haben mit der richtigen Antwort kommentiert. –
Wenn du nach links gehen willst, wäre deine 'int first' nicht die linke Option (' first') und nicht 'mid' und würde nicht" mid' und nicht 'last' sein Zuerst gehen? – Ceelos
@PaulBoddington Haben Sie den Link zu dieser Frage, um dies als ein Duplikat zu markieren? –