Home > Informatik > Stufe Q1 > 12. Suchen > 12.1 Lineare Suche

Übung 12.1-4, Lösungshinweise

Die Aufgabe

Übung 12.1-4 (PC, 7 Punkte)

Schreiben Sie ein Java-Programm, das einen Array mit 100 zufällig ausgewählten int-Zahlen im Bereich zwischen 1 und 1000 erzeugt und in der Konsole anzeigt.

2 Punkte gibt es, wenn die Konsolenausgabe besonders übersichtlich gestaltet wurde, zum Beispiel mit Hilfe von Tabulatoren "\t" zwischen den einzelnen Zahlen und genau 10 Zahlen pro Zeile.

3 Punkte gibt es, wenn jede Zufallszahl nur einmal in dem Array vorkommt.

2 Punkte gibt es dann für den Rest der Aufgabe: Statten Sie Ihr Programm dann mit einer Methode aus, die eine Suchzahl als int-Parameter annimmt und als int-Suchergebnis den Index der Zahl im Array ausgibt. So könnte die Signatur (der Kopf) dieser sondierenden Methode aussehen:

public int gibIndex(int suchzahl)

Sollte die Suchzahl nicht im Array vorkommen, soll der Wert 100 ausgegeben werden, da ja auch 100 Vergleiche benötigt wurden, um festzustellen, dass die Zahl nicht im Array vorhanden ist.

Systematisches Vorgehen

Die Erstellung des Grundprogramms (Array mit Zufallszahlen erzeugen und die Zahlen geordnet anzeigen) sollte eigentlich kein Problem mehr für Sie sein.

Wie aber kann man dafür sorgen, dass jede Zufallszahl nur einmal in dem Array vorkommt? Der Zufallsgenerator erzeugt die Zahlen ja ohne System, es kann also durchaus passieren, dass die 23. und die 78. Zufallszahl genau gleich sind. Das muss aber verhindert werden.

Bevor Sie eine neue Zufallszahl an die bereits bestehenden Arrayelemente anhängen, könnten Sie natürlich alle Arrayelement der Reihe nach überprüfen, ob eines dieser Element mit der neuen Zufallszahl übereinstimmt. Das ist aber ein recht aufwendiges Verfahren, der Quelltext dafür ist recht lang und bringt Ihnen maximal 1,5 Punkte ein.

Es gibt ein viel eleganteres Verfahren, das zunächst von einem sortierten Array ausgeht. Mehr möchte ich dazu nicht verraten, sonst wäre die Aufgabe für 3 Punkte zu einfach.

Der letzte Teil der Aufgabe ist recht einfach. Sie können sich etwas an dem Vokabelsuch-Algorithmus ganz oben auf der Hauptseite orientieren. Bitte nicht den fehlerhaften Algorithmus aus der kleinen Denkaufgabe verwenden!