is-Logo Suchen und Sortieren
- Sequentielles Suchen im Feld -

S. Spolwig

[Home | Algorithmen]

Beim Benutzen des Internets wird deutlich, dass das Suchen von Informationen ein nicht zu unterschätzendes Problem ist. Nicht nur für den Benutzer sondern auch für die Maschinen, die in Millionen von Seiten etwas finden sollen. Auch im Normalbetrieb ist ein Prozessor, wenn er dann etwas tut, überwiegend mit Such- und Sortieraufgaben beschäftigt, auch wenn wir es nicht offensichtlich wahrnehmen.

Wenn der Lehrer die Klausurnoten in seine Liste einträgt, sucht er jeweils bis er den Namen gefunden hat. Will er eine Notenstatistik machen, so muss er alle Einträge bis zum Ende der Liste durchsuchen. Wenn man nach 'Matzerat' im Berliner Telefonbuch sucht, wird man wieder anders vorgehen. Es sind also unterschiedliche Strategien erforderlich.

Sequentielles Suchen

Eine einfache Methoden besteht darin, beim ersten Element zu beginnen, mit dem Suchschlüssel (key) zu vergleichen und zu nächsten zu gehen, wenn es kein Treffer war. Beim Treffer wird die Position in der Liste herausgegeben.

     Key = D

F X T D A . . .
1 => => 4 5 6 7 8

Zum Testen der Suchalgorithmen benutzten Sie das Programm Such99, das Sie aus dem Gruppenordner kopieren. Das Programm ist voll funktionstüchtig bis auf die fehlende Suchmethode. Das Bild zeigt die statische Struktur.

Beim Klick auf den OK-Button erzeugt der Wortgenerator zufällig künstliche Wörter, mit denen die WortListe gefüllt wird. Die Liste wird dann mit der üblichen Methode MaskeAktualisieren an die Listbox im Fenster übergeben und dort angezeigt.

In der Listbox wird bei einem Treffer das gefundene Wort blau unterlegt und die Listenposition wird angezeigt. Dazu braucht das Listbox-Attribut ItemIndex die Positionsnummer aus der Stringliste, was man am besten mit einer function erledigt:

AusgabeLBox.ItemIndex := Suchliste.GetSuchPos(SchluesselEdt.Text) - 1;  // 1 abziehen, weil LBox bei 0 beginnt

Aufgabe:

Die lauffähige Testversion finden Sie im Gruppenordner 'Archiv'. Kopieren Sie bitte den Ordner 'Suchen' in Ihr Arbeitsverzeichnis.

  1. Studieren Sie bitte uFensterFrm, damit Sie wissen, was und wo Sie etwas zu ergänzen haben.
    WortListe ist eine Unterklasse von StrListe - wie unsere bekannte SListe, die jetzt mit speziellen Such- und Sortiermethoden erweitert wird.

  2. Implementieren Sie eine Listen-Methode

GetPos (key: string) : integer
Anfrage: Sequentielles Suchen, ob key in der Liste enthalten ist
vorher : -
nachher: liefert die Position in der Liste; wenn nicht vorhanden, dann 0

  1. Ergänzen Sie das Programm dahingehend, dass die Anzahl der Vergleiche angezeigt wird.



©    05. Oktober 2008   Siegfried Spolwig

page_top