aber wie finde ich dann heraus, an welcher stelle im array ein bestimmtes element ist?Es gibt keine Methode indexOf() für ein einfaches Array. Du verwechselst das evtl. mit ArrayList.
Offenbar programmierst du gerade eine Suchfunktion. Ist es nicht deren Sinn, ein bestimmtes Element zu finden?aber wie finde ich dann heraus, an welcher stelle im array ein bestimmtes element ist?
ja, richtigOffenbar programmierst du gerade eine Suchfunktion. Ist es nicht deren Sinn, ein bestimmtes Element zu finden?
Ich habe es inzwischen bemerkt, dass ich überhaupt kein IndexOf benötige. Es funktioniert soweit, nur wenn ich den letzten Wert auswähle, sprich in dem Fall 42, wird nichts ausgegeben. Sonst funktioniert alles.In Deinem Code ist doch ein ganz großer Denkfehler. Überlege Dir doch einmal:
- Was ist in den Variablen firstIndex, mitte, lastIndex?
- Was ist in suchwert?
Und dann schau, was Du vergleichst bei suchwert > mitte und so.
Und durch diesen Denkfehler hast Du später auch erst zu dem Problem mit dem indexOf.
Äh, ja der Name der Klasse sagt ja auch, dass es sich um eine binäre Suche handeln soll. Die funktioniert mit einem sortierten Suchfeld.Dann vielleicht der Hälfte Algorithmus in einem sortierten Array
Sortirt ist es ja schon.
Das hat er doch schon angepasst in #9 - oder wo siehst Du da noch ein Problem?Eigentlich müsstest du den Wert an der Mitte prüfen ob er grösser kleiner oder gleich des gesuchten Wertes ist, und dann weiter entscheiden.
Du benutzt ja den Index nicht den Wert der an der Stelle steht.
Das habe ich schon gefixt. Das einzige was noch nicht funktioniert ist dass wenn der letzte Wert im Array gewählt wird, völlig egal wie groß der Wert denn ist, er nicht gefunden wird, als wäre er gar nicht im Array.Dann einfach noch ein Hinweis: Such mal nach einer Zahl, die nicht in dem array vorkommt. Was passiert dann?
Spiel es doch einfach mit Stift und Zettel durch. Nehmen wir ein einfaches Beispiel:Das habe ich schon gefixt. Das einzige was noch nicht funktioniert ist dass wenn der letzte Wert im Array gewählt wird, völlig egal wie groß der Wert denn ist, er nicht gefunden wird, als wäre er gar nicht im Array.