Überblick 5.1 Sequentielles Suchen
Überblick 5.1 Sequentielles Suchen
Überblick 5.1 Sequentielles Suchen
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