Sortierverfahren - Rheingau-Gymnasium
Sortierverfahren - Rheingau-Gymnasium
Sortierverfahren - Rheingau-Gymnasium
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.