Hallo liebes Forum.
Da ich Anfänger bin und fleißig für meine Prüfung lerne habe ich mich an einem etwas kniffligen Beispiel versucht. Gegeben ist ein array mit den Zahlen {36, 42, 24, 18, 12, 6, 24, 30}. Nun soll ich die Binäre Suche mithilfe von binarySearch(int[] x) angehen. Gesucht wird ein lokales Maximum. Dh es könnte theoretisch 42 sein, oder auch 30.
Nun zu meinem Ansatz (nicht vergessen ich bin Anfänger, weswegen auch leicht vermeidbare/offensichtliche Fehler auftreten können). Die Ausgabe die ich erhalte ist 18. Was leider total falsch ist... Hoffe mir kann jemand helfen.
Da ich Anfänger bin und fleißig für meine Prüfung lerne habe ich mich an einem etwas kniffligen Beispiel versucht. Gegeben ist ein array mit den Zahlen {36, 42, 24, 18, 12, 6, 24, 30}. Nun soll ich die Binäre Suche mithilfe von binarySearch(int[] x) angehen. Gesucht wird ein lokales Maximum. Dh es könnte theoretisch 42 sein, oder auch 30.
Nun zu meinem Ansatz (nicht vergessen ich bin Anfänger, weswegen auch leicht vermeidbare/offensichtliche Fehler auftreten können). Die Ausgabe die ich erhalte ist 18. Was leider total falsch ist... Hoffe mir kann jemand helfen.
Java:
//
int binarySearch(int[] x) {
int Ug = 0;
int Og = x.length-1;
while(Ug <= Og) {
int mitte = (Og+Ug)/2;
if (Ug < x[mitte] && Og < x[mitte]){
return x[mitte];
}
else if (mitte-1 >= 0 && zahlen[mitte] < zahlen[mitte-1]) {
Og = mitte-1;
continue;
}
else {
Ug = mitte+1;
continue;
}
}
return -1;
}