Java array nach Zahl durchsuchen?

3 Antworten

Hi,

auf die schnelle würde ich eine for Schleife mit der Laufzeit = größe des Arrays(array.length) nehmen und in der Schleife eine if-Anweisung die in der Bedinung jede Zahl im Array auf die zu findende Zahl durchsucht und bei einem fund eine Ausgabe erfolgt. if(array[i] == "Zu findende Zahl").Bin mir jedoch nicht sicher müsste genauere Informationen bekommen z.B ob das Array ein, zwei,... dimensional ist usw. aber vllt hilft mein Lösungsansatz ja weiter. Zudem muss die Schleife bei einem fund dann noch in der If Anweisung abgebrochen werden (break;) :)

Die Ausgabe erfolgt dann mit einer normalen System.out.print("Dein Array"); Anweisung

Am besten du läufst mit einer for-Schleife durch. Diese haben automatisch einen Laufindex. In der Schleife vergleichst du den Wert des Zahlenfelds mit dem Index und wenn er deinem Wert entspricht, brichst du die Schleife ab.

Bei manchen Programmiersprachen sind die Schleifenzähler außerhalb der Schleife nicht mehr verfügbar. Dann musst du dir den Ergibnisindex in einer gesonderten Variablen merken.

Woher ich das weiß:Berufserfahrung – Programmierer
KingSuse 
Fragesteller
 12.01.2017, 10:23

Vielen Dank für deine schnelle Antwort! :) Wenn du die Zeit hast, könntest du es eventuell kurz in ein Beispiel fassen? Ich weiß nicht ob diese Informationen hilfreich sind aber wir arbeiten mit java eclipse (Programm) es ist ein eindimensionales Array. An sich habe ich die Aufgabe verstanden, allerdings habe ich probleme damit, sie in einen Quwllcode zu schreiben.

0
Suboptimierer  12.01.2017, 10:37
@KingSuse

Ich bin kein Java Experte, aber vom Prinzip läuft es so:

for(i=0;i<arr.length;i++)
  if(arr[i] == iGesuchteZahl)
    break;

Das Problem ist, dass der Fehlwert dem ersten Index gleicht. Also ein kleines bisschen Zusatzcode ist erforderlich.

0
ceevee  12.01.2017, 11:01
@Suboptimierer

for(i = 0;i < arr.length; i++) {
if(arr[i] == gesuchteZahl) {
return i;

}

}

Und das ganze in eine eigene Methode kapseln. So viel Zusatzcode ist das eigentlich nicht. :)

2
Suboptimierer  12.01.2017, 11:03
@ceevee

Nee, das meine ich nicht. Entweder muss man, falls nichts gefunden wurde -1 als Fehlwert zurück geben oder eine Boolsche Variable zusätzlich auf gefunden = true setzen, denn wenn du 0 zurück bekommst, weißt du nicht, ob die Zahl nicht gefunden wurde oder ob sie an erster Position im Array gefunden wurde.

...Achsooo, so wie du es geschrieben hast, könnte man ja einfach nach der for-Schleife "return -1;" schreiben. Okey, dann geht das.

1

Kommt drauf an ob das Array vorsortiert ist oder nicht.
Ansonsten geht immer die lineare Suche (wie die anderen schon erwähnt haben) die eine worst case Laufzeit von O(n) bzw best case O(1) hat