Arbeite mit dem folgenden BlueJ Projekt: https://codeberg.org/qg-info-unterricht/bluej-binarysearch
initZahlenreihe
. printZahlenreihe
Implementiere eine Methode binaereSuche
, welche den Index des gesuchten Elements zurückgibt oder -1
, wenn der gesuchte Wert nicht gefunden wird. Folge dabei den Tipps und Aufgabenstellungen unten.
Erstelle ein Flussdiagramm anhand der folgenden Beschreibung.
public int binaereSuche(int needle)
binaereSuche
arbeitet auf dem zuvor erzeugten Array und nimmt als Argument die gesuchte Zahl entgegen. Der Rückgabewert ist der Index des Arrayelements, in dem der gesuchte Wert steht - oder -1, wenn dieser nicht gefunden wurde.0
, größter Index daten.length-1
)int mitte = (oben+unten)/2; //Wenn oben+unten ungerade ist, wird ''mitte'' abgerundet
return
zurückgegeben, denn das Element ist gefunden.daten[mitte]
, kann die obere Hälfte des Arrays ausgeschlossen werden, indem man als neue obere Grenze mitte-1
festlegt.if ( gesucht < daten[mitte]) { oben = mitte-1; }
daten[mitte]
kann die untere Hälfte ausgeschlossen werden, dazu muss der Wert von unten
auf mitte+1
gesetzt werden.if ( gesucht > daten[mitte]) { unten = mitte+1; }
oben-unten
noch mindestens ein Element umfasst.Implementiere die Methode wie entworfen und teste sie.