20.11.2013 Aufrufe

Sortierverfahren - Rheingau-Gymnasium

Sortierverfahren - Rheingau-Gymnasium

Sortierverfahren - Rheingau-Gymnasium

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.

Such- und<br />

<strong>Sortierverfahren</strong>


Suchen<br />

In der täglichen Programmierpraxis besteht häufig<br />

eine Aufgabe darin, in einem Feld ein Element mit<br />

bestimmten Eigenschaften zu suchen.<br />

Zu diesem Zweck gibt es verschiedene Suchalgorithmen,<br />

die sich in ihrem Aufbau und ihrer<br />

Effizienz unterscheiden.


Lineares Suchen<br />

Bei der linearen Suche wird eine Menge von<br />

Elementen, z. B. Ein Array nach einem<br />

bestimmten Kriterium durchsucht.<br />

So kann z. B. das Maximum oder Minimum der<br />

Werte bestimmt werden.


Binäre Suche<br />

Liegt ein Feld sortiert vor, kann man die binäre<br />

Suche verwenden.<br />

Die binäre Suche funktioniert nach dem folgenden<br />

Prinzip:<br />

●<br />

●<br />

Es wird zuerst das mittlere Element in der<br />

sortierten Datenmenge untersucht.<br />

Ist es größer als das gesuchte Element, muss<br />

nur noch in der unteren Hälfte gesucht werden,<br />

anderenfalls in der oberen.


Binäre Suche<br />

● Nun wird die Suche auf die halbierte<br />

Datenmenge angewendet usw.<br />

●<br />

Die Suche wird beendet, wenn das Element<br />

gefunden wurde oder nur noch ein Element<br />

übrig ist.<br />

● Entweder ist dieses letzte Element das<br />

gesuchte oder das gesuchte Element kommt<br />

nicht vor.


<strong>Sortierverfahren</strong><br />

●<br />

●<br />

●<br />

●<br />

Bubble-Sort<br />

Insertion-Sort<br />

Selection-Sort<br />

Quick-Sort


Bubble-Sort (Blasensortierung)<br />

Der Name Bubble-Sort – Sortieren mit Blasen –<br />

entspringt der Vorstellung, dass die kleinen,<br />

(leichten) Elemente wie Blasen in einer Flüssigkeit<br />

nach oben (an den Beginn des Feldes) steigen


Bubble-Sort<br />

●<br />

Es werden jeweils benachbarte Elemente verglichen.<br />

Wenn das linke Element größer ist als<br />

das rechte, werden sie vertauscht.<br />

● Begonnen wird mit den Elementen 0 und 1.<br />

Dann wird mit den Elementen 1 und 2 fortgesetzt.<br />

Danach werden die Elemente 2 und<br />

verglichen usw. bis ans Ende des Feldes.<br />

●<br />

So wandert das größte Element an das Ende<br />

des Feldes. Das letzte Element des Feldes ist<br />

somit sortiert.


Bubble-Sort<br />

●<br />

●<br />

Nun werden die ersten drei Schritte wiederholt.<br />

Es werden aber nur noch die Elemente bis zum<br />

vorletzten Element miteinander verglichen.<br />

Danach steht das zweitgrößte Element auf der<br />

vorletzten Position. Es sind die beiden letzten<br />

Elemente sortiert.<br />

● Die ersten drei Schritte werden solange<br />

wiederholt bis die zwei kleinsten Elemente<br />

verglichen werden. Dabei entfällt bei jeder<br />

Wiederholung das jeweils letzte Element, da es<br />

bereits sortiert ist.


Insertion-Sort<br />

(Sortieren durch Einfügen)<br />

Beim Insertion-Sort werden in eine bereits sortierte<br />

Menge, die zu Beginn auch leer sein kann,<br />

weitere Elemente an der richtigen Position<br />

eingefügt.<br />

Dies ist vergleichbar mit dem Einsortieren von<br />

Spielkarten beim Kartenspiel.<br />

Man nimmt eine Karte nach der anderen auf und<br />

sortiert diese in das Spielblatt.


Insertion-Sort<br />

(Sortieren durch Einfügen)<br />

Bei der Implementierung von Insertion-Sort wird<br />

häufig nur mit einem Feld von Elementen gearbeitet.<br />

In diesem Fall hat man alle Karten auf einmal<br />

aufgenommen und sortiert sie jetzt durch<br />

Umstecken an die richtige Position (von einer<br />

Seite beginnend).<br />

Dadurch teilt man die Gesamtmenge aller Karten<br />

in eine sortierte und eine unsortierte Menge.


Insertion-Sort<br />

●<br />

●<br />

●<br />

Es werden Teilfelder sortiert, wobei mit dem<br />

kleinsten Teilfeld mit 2 Elementen begonnen<br />

wird.<br />

Es wird immer für das letzte Element des Teilfeldes<br />

die richtige Position gesucht.<br />

Das letzte Element des Teilfeldes wird mit allen<br />

Elementen verglichen, die sich vor ihm im Feld<br />

befinden.<br />

● Ist das letzte Element kleiner als ein<br />

Vorgängerelement, so rutscht dieses Vorgängerelement<br />

um eine Position nach hinten.


Insertion-Sort<br />

●<br />

●<br />

●<br />

●<br />

So rutschen nach und nach alle Elemente des<br />

Feldes um eine Position nach hinten, die größer<br />

sind als das letzte Element.<br />

Wird ein Element gefunden, das kleiner ist als<br />

das letzte, dann wird das letzte Element an der<br />

Position hinter dem kleineren Element eingefügt.<br />

Nun wird das Teilfeld um das nächste Element<br />

erweitert und die ersten Schritte wiederholt.<br />

Wenn das Teilfeld die Größe des gesamten<br />

Feldes annimmt, ist der Algorithmus beendet.


Selection-Sort<br />

(Sortieren durch Auswahl)<br />

Beim Sortieren durch Auswahl wird das kleinste<br />

Element des unsortierten Bereichs gesucht,<br />

ausgewählt und schließlich mit dem Grenzelement<br />

vertauscht.<br />

Nach dem Tausch wird die Grenze einen Schritt<br />

weitergeschoben bis das Ende des Feldes<br />

erreicht ist.


Selection-Sort<br />

(Sortieren durch Auswahl)<br />

Zu vergleichen ist diese Form des Sortierens mit<br />

einem Kartenblatt, das nach dem Austeilen mit<br />

einem Griff aufgenommen wird.<br />

Der Kartenspieler ordnet den kompletten Haufen<br />

auf der Hand und platziert je nach Vorliebe die<br />

höher- oder minderwertigen Karten nacheinander<br />

auf eine Seite des Blattes.


Selection-Sort<br />

●<br />

●<br />

Es wird das kleinste Element eines Teilfeldes<br />

gesucht, wobei dieses Teilfeld zu Beginn das<br />

komplette Feld ist.<br />

Dieses kleinste Element wandert an den<br />

Anfang des Teilfeldes. Das erste Element des<br />

Feldes ist damit sortiert.<br />

● Nun werden die ersten beiden Schritte<br />

wiederholt. Es wird aber nur noch das Teilfeld<br />

ab dem zweiten Element betrachtet.


Selection-Sort<br />

●<br />

●<br />

Danach steht das zweitgrößte Element an der<br />

zweiten Stelle. Es sind die ersten beiden<br />

Elemente sortiert.<br />

Die ersten beiden Schritte werden solange<br />

wiederholt bis nur noch ein unsortiertes<br />

Element übrig ist. Dabei verkürzt sich das<br />

Teilfeld bei jeder Wiederholung um das jeweils<br />

erste Element, da es bereits sortiert ist.


Quick-Sort<br />

(Teile und Herrsche)<br />

●<br />

●<br />

●<br />

●<br />

Ein Feld wird in zwei Teilfelder zerlegt.<br />

Dazu wird das erste Element des Feldes als<br />

Vergleichselement genutzt, das an die richtige<br />

Stelle im Feld verschoben wird.<br />

Alle Elemente, die kleiner als dieses Element<br />

sind, werden in das linke Teilfeld verschoben.<br />

Die größeren Elemente kommen in das rechte<br />

Teilfeld.


Quick-Sort<br />

●<br />

●<br />

Das einsortierte Element steht nun an der<br />

richtigen Stelle und braucht nicht mehr beachtet<br />

zu werden.<br />

Die beiden Teilfelder links und rechts von<br />

diesem Element werden dann nach dem<br />

gleichen Prinzip weiterverarbeitet.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!