Sortieren. Eine Testmenge erstellen



Ähnliche Dokumente
Überblick. Lineares Suchen

Über Arrays und verkettete Listen Listen in Delphi

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus: Übungsbuch für den Grundkurs mit Tipps und Lösungen: Analysis

Leichte-Sprache-Bilder

Professionelle Seminare im Bereich MS-Office

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Das Leitbild vom Verein WIR

Erfahrungen mit Hartz IV- Empfängern

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Was meinen die Leute eigentlich mit: Grexit?

Kurs 1613 Einführung in die imperative Programmierung

1 topologisches Sortieren

Leitprogramm Bubblesort

Wirtschaftsinformatik I

Kapiteltests zum Leitprogramm Binäre Suchbäume

Sortieren durch Einfügen. Prof. Dr. W. Kowalk Sortieren durch Einfügen 1

Was man mit dem Computer alles machen kann

Die richtigen Partner finden, Ressourcen finden und zusammenführen

Landes-Arbeits-Gemeinschaft Gemeinsam Leben Gemeinsam Lernen Rheinland-Pfalz e.v.

40-Tage-Wunder- Kurs. Umarme, was Du nicht ändern kannst.

Primzahlen und RSA-Verschlüsselung

Dokumentation für das Spiel Pong

Anwendungsbeispiele Buchhaltung

Wir machen neue Politik für Baden-Württemberg

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

Die Post hat eine Umfrage gemacht

Kulturelle Evolution 12

Was ist Sozial-Raum-Orientierung?

Technische Analyse der Zukunft

Abschnitt: Algorithmendesign und Laufzeitanalyse

Wollen Sie einen mühelosen Direkteinstieg zum Online Shop der ÖAG? Sie sind nur einen Klick davon entfernt!

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Kapitalerhöhung - Verbuchung

TTS - TinyTimeSystem. Unterrichtsprojekt BIBI

teischl.com Software Design & Services e.u. office@teischl.com

PC-Umzug: So ziehen Sie Ihre Daten von Windows XP nach Windows 8 um

ARCO Software - Anleitung zur Umstellung der MWSt

SharePoint-Migration.docx

Wichtig ist die Originalsatzung. Nur was in der Originalsatzung steht, gilt. Denn nur die Originalsatzung wurde vom Gericht geprüft.

1. Was ihr in dieser Anleitung

Alle gehören dazu. Vorwort

Algorithmen mit Python

Fotos in Tobii Communicator verwenden

Gezielt über Folien hinweg springen

Statuten in leichter Sprache

CSS-Grundlagen. Etwas über Browser. Kapitel. Die Vorbereitung

6.2 Scan-Konvertierung (Scan Conversion)

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Anwendungsbeispiele Buchhaltung

Kundenbefragung als Vehikel zur Optimierung des Customer Service Feedback des Kunden nutzen zur Verbesserung der eigenen Prozesse

UserManual. Handbuch zur Konfiguration einer FRITZ!Box. Autor: Version: Hansruedi Steiner 2.0, November 2014

Nicht über uns ohne uns

Unsere Ideen für Bremen!

Eva Douma: Die Vorteile und Nachteile der Ökonomisierung in der Sozialen Arbeit

Wichtige Forderungen für ein Bundes-Teilhabe-Gesetz

Glaube an die Existenz von Regeln für Vergleiche und Kenntnis der Regeln

Windows 10. Vortrag am Fleckenherbst Bürgertreff Neuhausen.

Sortierverfahren. Sortierverfahren für eindimensionale Arrays

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Was ich als Bürgermeister für Lübbecke tun möchte

M. Graefenhan Übungen zu C. Blatt 3. Musterlösung

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus:

Vorgehensweise bei Lastschriftverfahren

Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage

Folgeanleitung für Klassenlehrer

Sowohl die Malstreifen als auch die Neperschen Streifen können auch in anderen Stellenwertsystemen verwendet werden.

Rohstoffanalyse - COT Daten - Gold, Fleischmärkte, Orangensaft, Crude Oil, US Zinsen, S&P500 - KW 07/2009

Das Persönliche Budget in verständlicher Sprache

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu])

Informationen zum Ambulant Betreuten Wohnen in leichter Sprache

Deutsches Rotes Kreuz. Kopfschmerztagebuch von:

Reporting Services und SharePoint 2010 Teil 1

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

MARKUS WASER THE POWER IS IN YOU FACT SHEET IHR WEG ZUM PERSÖNLICHEN ERFOLG

Sollsaldo und Habensaldo

8. Berechnung der kalkulatorischen Zinsen

Anleitung über den Umgang mit Schildern

Zeichen bei Zahlen entschlüsseln

Bernadette Büsgen HR-Consulting

Der Kalender im ipad

Vorwort... 1 Voraussetzungen... 1 Teilnahme am Testmeeting... 2 Browser Add-on für WebEx installieren... 3 Einrichtung des Audiokanals...

ONLINE-AKADEMIE. "Diplomierter NLP Anwender für Schule und Unterricht" Ziele

COMPUTERIA VOM SERIENBRIEFE UND ETIKETTENDRUCK

GeoPilot (Android) die App

Pflegende Angehörige Online Ihre Plattform im Internet

Informationsblatt Induktionsbeweis

Regeln für das Qualitäts-Siegel

Anleitung Typo3-Extension - Raumbuchungssystem

Schritte 4. Lesetexte 13. Kosten für ein Girokonto vergleichen. 1. Was passt? Ordnen Sie zu.

Entwicklung des Dentalmarktes in 2010 und Papier versus Plastik.

Informatik-Sommercamp Mastermind mit dem Android SDK

PowerPoint vertonen. by H.Schönbauer 1

Modellbildungssysteme: Pädagogische und didaktische Ziele

Bedienungsanleitung. Stand: Copyright 2011 by GEVITAS GmbH

Leit-Bild. Elbe-Werkstätten GmbH und. PIER Service & Consulting GmbH. Mit Menschen erfolgreich

Wenn Sie das T-Online WebBanking das erste Mal nutzen, müssen Sie sich zunächst für den Dienst Mobiles Banking frei schalten lassen.

Etikettendruck mit Works 7.0

Leichte Sprache Informationen zum Europäischen Sozialfonds (ESF) Was ist der Europäische Sozialfonds?

Transkript:

Sortieren Eine der wohl häufigsten Aufgaben für Computer ist das Sortieren, mit dem wir uns in diesem Abschnitt eingeher beschäftigen wollen. Unser Ziel ist die Entwicklung eines möglichst effizienten Sortieralgorithmus, der einen geringen Speicherbedarf aufweist und möglichst schnell ist. Eine Testmenge erstellen Ausgangspunkt unserer Betrachtung ist ein eindimensionales, ungeordnetes statisches Array, z.b.: var Feld : array[1.. 40] of Byte; Von der Möglichkeit dynamischer Arrays werden wir ebenfalls Gebrauch machen: Die Übergabe von offenen Arrays an Funktionen bzw. Prozeduren. Innerhalb der Prozedur lassen sich über die Funktionen High und Low die Schranken des Arrays bestimmen, damit sind auch die Grenzwerte für Schleifenvariablen festgelegt. procedure sort_shell (var a: array of word); Zurück zum Sortieren: Für die Untersuchung verwen wir die Routine Zufallszahlen, die das Array mit einer bestimmten Anzahl von zufälligen Werten (Word) füllt: procedure zufallszahlen(var a : array of word); var bis,i: LongInt; for i := 0 to bis do a[i] := Random(65000) HINWEIS: Auf die Verwung von Assembler-Code (bietet sich beim Datentyp Word eigentlich an) wurde bewusst verzichtet, um die Algorithmen mit wenig Aufwand auch für andere Datentypen nutzen zu können. HINWEIS: Alle beschriebenen Verfahren lassen sich mit relativ wenig Aufwand auf Pointer- Listen etc. (siehe Kapitel 14) umschreiben. Arbeiten Sie mit Records, ist diese Vorgehensweise unbedingt zu empfehlen, da in diesem Fall nicht erst der komplette Record kopiert werden muss, sondern lediglich der Pointer neu gesetzt wird (wesentlich bessere Performance!). Austauschverfahren (Exchange-Sort) Das Austauschverfahren ist eine der einfachsten und zugleich langsamsten Sortiermethoden. Beginn mit dem ersten wird jedes weitere Element der Liste mit allen anderen Werten verglichen. Ist der Vergleichswert kleiner als der aktuelle Wert, werden beide ausgetauscht. Dieser Vorgang wird bis AN-1 fortgesetzt. Genaueres können Sie dem folgen Programmablaufplan entnehmen. Die Realisierung des Sortieralgorithmus in Delphi: procedure sort_austausch (var a: array of Word); var bis,i,j : LongInt; for i := 0 to bis - 1 do for j := i + 1 to bis do If a[i] > a[j] then h := a[i]; a[i] := a[j];

a[j] := h Einen Test der Leistungsfähigkeit im Vergleich zu den anderen Verfahren finden Sie am Ende dieses Abschnitts. Auswahlverfahren Das Auswahlverfahren ähnelt in seiner Arbeitsweise dem Austauschverfahren. Beginn mit dem ersten Feldelement wird das Minimum gesucht, im Erfolgsfall werden die Werte getauscht. In dieser Vorgehensweise ist der Vorteil gegenüber dem Austauschverfahren zu sehen. Bei jedem Schleifurchlauf wird maximal ein Wert getauscht. Für die Ermittlung des Minimums verwet das Programm eine Hilfsvariable vom Typ Word sowie einen Hilfsindex (Zeiger auf das jeweils kleinste Element).

Die Umsetzung in Delphi bereitet keine weiteren Probleme: procedure sort_auswahl (var a: array of Word); var bis,i,j,k : LongInt; for i := 0 to bis - 1 do h := a[i]; k := i; for j := i + 1 to bis do if a[j] < h then h := a[j]; k := j a[k] := a[i]; a[i] := h Eine noch schnellere Variante des Auswahlverfahrens sortiert das gefundene Minimum in ein neues Feld ein. Diese Möglichkeit entspricht zwar dem menschlichen Vorgehen, zwei Punkte sprechen jedoch gegen dieses Verfahren:? Der Speicherbedarf verdoppelt sich durch das zweite benötigte Array.? Wir brauchen ein Kennzeichen für bereits einsortierte Werte ("abstreichen").

Bubble-Sort-Verfahren Dieses Verfahren ändert die bisherige Vorgehensweise dahingeh, dass der jeweils größere zweier benachbarter Werte durch das gesamte Array "geschoben" wird. Aus diesem Vorgang resultiert die Bezeichnung "Bubble-Sort", die Maxima steigen wie Blasen (Bubbles) zu ihren jeweiligen Positionen auf. Dieser Vorgang wird so lange wiederholt, bis das Minimum im ersten Feld steht. Was so kompliziert aussieht, ist auch entsprech langsam. Der Bubble-Sort-Algorithmus zählt deshalb mit zu den Schlusslichtern, wenn es um Ausführungsgeschwindigkeit geht. Der Algorithmus ist nur vollständigkeitshalber aufgeführt, von der Anwung für "normale" Applikationen wird abgeraten (Ausnahmen siehe Abschnittse). procedure sort_bubble (var a: array of Word); var bis,i : LongInt; repeat for i := 0 to bis - 1 do if a[i] > a[i + 1] then h := a[i]; a[i] := a[i + 1]; a[i + 1] := h Dec(bis) until bis = 1 Eine Mutante des Bubble-Sort, der Shake-Sort, wechselt währ der Bearbeitung die Sortierrichtung, d. h., das Minimum wird an den Anfang geschoben. Was für Vorteile soll das bringen? Für Sortiervorgänge im Arbeitsspeicher spielt die obige Vorgehensweise keine Rolle, werden die Daten jedoch auf einer Festplatte oder einem Magnetband sortiert, lassen sich die Positionierungen der Schreib-/Leseköpfe auf diese Art und Weise minimieren. Da in diesem Fall die mittlere Zugriffszeit der Festplatte die Geschwindigkeit des Sortiervorgangs bestimmt, ist eine Optimierung an dieser Stelle besonders wichtig. Und damit können Sie sich denken, in welchen Bereichen auch der Bubble-Sort-Algorithmus sinnvoll einsetzbar wäre.

Shell-Sort-Verfahren Die Geschwindigkeitsvorteile werden mit einer etwas aufwändigeren Programmierung bezahlt. Der Ansatz ist anders als bisher. Das Array der Länge N wird halbiert, danach vergleicht man die Werte A0 und AN/2, A1 und AN/2+1,... miteinander. Das Maximum wird in die zweite Hälfte verschoben. In einem zweiten Durchlauf werden die Intervalle halbiert, es erfolgt ein erneuter Vergleich. Der Ablauf wiederholt sich so lange, bis die Intervallgröße einem Feldelement entspricht und die jeweils benachbarten Werte verglichen werden: procedure sort_shell (var a: array of Word); var bis,i,j,k : LongInt; k := bis shr 1; // div 2 while k > 0 do for i := 0 to bis - k do j := i; while (j >= 0) And (a[j] > a[j + k]) do h := a[j]; a[j]:= a[j + k]; a[j + k] := h;

If j > k then Dec(j,k) else j := 0 k := k shr 1 // div 2