04.10.2013 Aufrufe

Überblick 5.1 Sequentielles Suchen

Überblick 5.1 Sequentielles Suchen

Überblick 5.1 Sequentielles Suchen

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

<strong>Suchen</strong> für beliebige Objekttypen<br />

• Falls Datenobjekte vom Typ Element sind, so sollte die Klasse<br />

Element die Methode public boolean equals(Object obj)<br />

bereitstellen, die true zurückgibt, falls das aufrufende Objekt und<br />

das übergebene Objekt gleich sind im Sinne der Anwendung:<br />

class Element {<br />

...<br />

public boolean equals(Object obj) { ... }<br />

...<br />

}<br />

• Stellt die Klasse Element die Methode equals nicht bereit, so wird<br />

die entsprechende Methode der Klasse Object verwendet, die<br />

true zurückgibt, falls beide Objektreferenzen gleich sind!<br />

• Sequentieller Suchalgorithmus:<br />

int find(Object[] a, Object x) {<br />

int i = a.length - 1;<br />

while ((i >= 0) && (! x.equals(a[i])))<br />

i--;<br />

return i;<br />

}<br />

© Klaus Hinrichs Informatik II – <strong>Suchen</strong> und Sortieren<br />

5.2 Binäres <strong>Suchen</strong><br />

• Im Array a abgespeicherte Datenelemente seien geordnet bezüglich<br />

einer dem Wertebereich der Datenelemente zugrunde liegenden<br />

Ordnungsrelation !:<br />

" k, 0 ! k < n–1: a[k] ! a[k + 1]<br />

• Suche kann beschleunigt werden, da ein Vergleich des Suchelementes<br />

x mit einem Arrayelement mehr Information gibt als im<br />

ungeordneten Fall:<br />

x " a[m] schließt nicht nur a[m], sondern auch alle Elemente zur<br />

einen oder anderen Seite von m aus:<br />

– x < a[m] $ " i # m: a[i] " x<br />

– x > a[m] $ " i ! m: a[i] " x<br />

a[m] < x<br />

m<br />

Falls<br />

kann x nicht enthalten sein in<br />

© Klaus Hinrichs Informatik II – <strong>Suchen</strong> und Sortieren<br />

a[m] > x<br />

m<br />

5-7<br />

5-8

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!