2016-03-21 15 views
0

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); 
} 
+0

Ich habe diese Frage gestern gesehen, und etwa 3 Leute haben mit der richtigen Antwort kommentiert. –

+0

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

+0

@PaulBoddington Haben Sie den Link zu dieser Frage, um dies als ein Duplikat zu markieren? –

Antwort

0

Stellen Sie sicher, Sie klar sind, was der Algorithmus tut, und dann einen guten langen Blick auf Ihre rekursive Anrufe nehmen.

Verwandte Themen