vorkurs informatik sose 16 - ips.tu-braunschweig.de · struktogramme – abweisende schleife –...
TRANSCRIPT
Vorkurs Informatik SoSe 16Algorithmen 1
Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 23.03.2016
Technische Universität Braunschweig, IPS
Institut für Programmierungund Reaktive Systeme
Inhaltsverzeichnis
Der Algorithmusbegriff
Darstellung von Algorithmen
Programmablaufplan DIN66001-1966
Struktogramme
Sortieren
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 2Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Überblick
Der Algorithmusbegriff
Darstellung von Algorithmen
Programmablaufplan DIN66001-1966
Struktogramme
Sortieren
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 3Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Der Algorithmusbegriff – Handlungsvorschriften
Viele Dinge im Leben werden nach einem festgelegtem Schemadurchgeführt. Diese Schemata regeln, welche Schritte mit welchenObjekten in welcher Reihenfolge (beispielsweise nacheinander,wiederholt oder bedingt) gemacht werden.
Beispiel: Wie heben Sie Geld am Geldautomaten ab?
Von der Handlungsvorschrift zum Algorithmus. . .
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 4Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Der Algorithmusbegriff – Rezept für Vanillekipferl
200g Mehl
250g Butter
180g Zucker
200g fein gemahlene Mandeln
1 Päckchen Vanillezucker
Zubereitung:
Aus den Zutaten einen Teig kneten. Eine etwa walnussgroße MengeTeig in der Hand rollen und ein Hörnchen formen. Diese nicht zudicht auf ein mit Backpapier ausgelegtes Blech legen und imvorgeheizten Backofen bei schwacher Hitze (ca. 150 ◦C) für ca.10-15 Minuten goldbraun backen.
Solange sie noch warm sind mit einem Gemisch aus 1 TassePuderzucker und 1 Päckchen Vanillezucker bestäuben.
Abkühlen lassen und in einer gut verschließbaren Doseaufbewahren.
Handlungsvorschrift Vanillekipferl I
Implizit können wir dem Rezept folgende Handlungsvorschriftentnehmen:
Nimm eine Schüssel
Fülle 200g Mehl hinein
Fülle 250g Butter hinein
Fülle 180g Zucker hinein
Fülle 200g fein gemahlene Mandeln hinein
Fülle 1 Päckchen Vanillezucker hinein
Knete den Inhalt der Schüssel, bis ein glatter Teig entsteht
Forme aus walnussgroßen Stückchen Teig kleine Hörnchen und legesie auf ein mit Papier ausgelegtes Blech
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 6Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Handlungsvorschrift Vanillekipferl IISchalte den Backofen auf 150 ◦C
Warte 10 Minuten
Schiebe Blech in den Backofen
Stelle eine Mischung aus einer Tasse Puderzucker und einerPackung Vanillezucker her
Warte 10-15 Minuten bis Vanillekipferl goldbraun
Nimm Blech aus dem Backofen heraus
Bestäube die warmen Kipferl mit Mischung aus Puder- undVanillezucker
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 7Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Intuitives Algorithmenverständnis
Gegeben sei ein „Problem“ oder eine „Problemklasse“
Ein Algorithmus ist eine Handlungsvorschrift zum „Lösen“ desProblems, wobei
die Handlungsvorschrift erkennbar einen Anfang und ein Ende1 hat,
aus einzelnen Schritten besteht, für die jeweils klar ist, was mit welchenDingen zu tun ist
und die Reihenfolge der Schritte festlegt.
Ein Problem, für dessen Lösung ein Algorithmus existiert, heißtberechenbar.
1Die Beschreibung ist ein endlicher Text, die Ausführung der Handlungsvorschriftdagegen muss nicht enden.
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 8Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Vanillekipferl als Algorithmus I
Nimm eine Schüssel
Fülle 200g Mehl hinein
Fülle 250g Butter hinein
Fülle 180g Zucker hinein
Fülle 200g fein gemahlene Mandeln hinein
Fülle 1 Päckchen Vanillezucker hinein
Knete den Inhalt der Schüssel, bis ein glatter Teig entsteht
Forme aus walnussgroßen Stückchen Teig kleine Hörnchen und legesie auf ein mit Papier ausgelegtes Blech
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 9Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Vanillekipferl als Algorithmus IISchalte den Backofen auf 150 ◦C
Warte 10 Minuten
Schiebe Blech in den Backofen
Stelle eine Mischung aus einer Tasse Puderzucker und einerPackung Vanillezucker her
Warte 10-15 Minuten bis Vanillekipferl goldbraun
Nimm Blech aus dem Backofen heraus
Bestäube die warmen Kipferl mit Mischung aus Puder- undVanillezucker
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 10Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Der Algorithmusbegriff – Ein Algorithmus?
„Engagement, Teamgeist und das permanente Streben nachPerfektion sind wichtige Bausteine unseres Erfolgs undPhilosophie. Mit technologischer Kompetenz und Innovationskraftbringt XX bewegende Ideen auf die Straße. Der schnellsteSportwagen der Welt, das größte und stärkste Diesel-Aggregat,das je in einen PKW eingebaut wurde oder das sparsamsteAutomobil aller Zeiten sind nur einige Beispiele, wie XX mittechnischen Revolutionen neue Maßstäbe setzt.“
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 11Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Beispiele für Algorithmen
Koch- und Backrezepte
Bedienungsanleitungen (z.B. für Handys)
Notenfolgen zum Musizieren
Waschmaschinenprogramme
Sortierverfahren
Abfolge in Produktionsstraßen
Berechnungsverfahren:ggT bestimmen
Funktionen ableiten
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 12Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Der Algorithmusbegriff – Präzisierung
Ein Algorithmus ist eine wohldefinierte Rechenvorschrift, die eine(eventuell leere) Menge von Eingaben verwendet und eine Mengevon Ausgaben erzeugt.
Ein Algorithmus ist also eine Abfolge von Berechnungsschritten, diedie Eingabe in die Ausgabe umwandelt.
Der Algorithmus muss durch einen endlichen Text in einerwohldefinierten Sprache beschrieben sein.
Die Objekte der Berechnung müssen klar sein.
Die elementaren Operationen müssen mechanisch ausführbar sein.
Die Reihenfolge der Operationen muss feststehen.
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 13Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Überblick
Der Algorithmusbegriff
Darstellung von Algorithmen
Programmablaufplan DIN66001-1966
Struktogramme
Sortieren
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 14Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Darstellung von Algorithmen
Man kann einen Algorithmus beispielsweise alsTextPseudocode oder in einer Programmierspracheals Flussdiagramm (Programmablaufplan)Struktogramm (Nassi-Shneiderman-Diagramm). . .
darstellen.Im Rahmen dieses Vorkurses werden wir Struktogramme nachNassi-Shneiderman verwenden, wie sie auch in DIN 66261festgelegt sind.Ein aus verschiedenen Strukturblöcken zusammengesetzteStruktogramm ist im Ganzen rechteckig, d.h. genauso breit wie seinbreitester Strukturblock.
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 15Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Überblick
Der Algorithmusbegriff
Darstellung von Algorithmen
Programmablaufplan DIN66001-1966
Struktogramme
Sortieren
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 16Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Programmablaufplan DIN66001-1966 – Sinnbilder
Sinnbild Benennung und Bemerkung
02.04.2014 | Vorkurs Informatik – Algorithmen 1 | Seite 13
Sinnbilder:
Sinnbilder für Programmablaufplan nach DIN66001-1966
Sinnbild Bennenung und Bemerkung
Operation, allgemein (process)
Verzweigung (decision)
Unterprogramm (prefdefinedprocess)
Ein- und Ausgabe (input/output)
Operation, allgemein (process)
02.04.2014 | Vorkurs Informatik – Algorithmen 1 | Seite 13
Sinnbilder:
Sinnbilder für Programmablaufplan nach DIN66001-1966
Sinnbild Bennenung und Bemerkung
Operation, allgemein (process)
Verzweigung (decision)
Unterprogramm (prefdefinedprocess)
Ein- und Ausgabe (input/output)
Verzweigung (decision)
02.04.2014 | Vorkurs Informatik – Algorithmen 1 | Seite 13
Sinnbilder:
Sinnbilder für Programmablaufplan nach DIN66001-1966
Sinnbild Bennenung und Bemerkung
Operation, allgemein (process)
Verzweigung (decision)
Unterprogramm (prefdefinedprocess)
Ein- und Ausgabe (input/output)
Unterprogramm (predefined process)
02.04.2014 | Vorkurs Informatik – Algorithmen 1 | Seite 13
Sinnbilder:
Sinnbilder für Programmablaufplan nach DIN66001-1966
Sinnbild Bennenung und Bemerkung
Operation, allgemein (process)
Verzweigung (decision)
Unterprogramm (prefdefinedprocess)
Ein- und Ausgabe (input/output)
Ein- und Ausgabe (input/output)
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 17Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Programmablaufplan DIN66001-1966 – Sinnbilder
Sinnbild Benennung und Bemerkung
02.04.2014 | Vorkurs Informatik – Algorithmen 1 | Seite 14
Sinnbilder:
Sinnbilder für Programmablaufplan nach DIN66001-1966
Sinnbild Bennenung und Bemerkung
Schleifenbegrenzung (loop limit)Anfang
Schleifenbegrenzung (loop limit)Ende
Ablauflinie (flow line)Vorzugsrichtungen (Pfeil optional):a) von oben nach untenb) von links nach rechts
Zusammenführen (junction)Ausgang sollte durch einen Pfeilgekennzeichnet werden
Schleifenbegrenzung (loop limit)Anfang
02.04.2014 | Vorkurs Informatik – Algorithmen 1 | Seite 14
Sinnbilder:
Sinnbilder für Programmablaufplan nach DIN66001-1966
Sinnbild Bennenung und Bemerkung
Schleifenbegrenzung (loop limit)Anfang
Schleifenbegrenzung (loop limit)Ende
Ablauflinie (flow line)Vorzugsrichtungen (Pfeil optional):a) von oben nach untenb) von links nach rechts
Zusammenführen (junction)Ausgang sollte durch einen Pfeilgekennzeichnet werden
Schleifenbegrenzung (loop limit)Ende
02.04.2014 | Vorkurs Informatik – Algorithmen 1 | Seite 14
Sinnbilder:
Sinnbilder für Programmablaufplan nach DIN66001-1966
Sinnbild Bennenung und Bemerkung
Schleifenbegrenzung (loop limit)Anfang
Schleifenbegrenzung (loop limit)Ende
Ablauflinie (flow line)Vorzugsrichtungen (Pfeil optional):a) von oben nach untenb) von links nach rechts
Zusammenführen (junction)Ausgang sollte durch einen Pfeilgekennzeichnet werden
Ablauflinie (flow line) Vorzugsrichtungen(Pfeil optional):a) von oben nach untenb) von links nach rechts
02.04.2014 | Vorkurs Informatik – Algorithmen 1 | Seite 14
Sinnbilder:
Sinnbilder für Programmablaufplan nach DIN66001-1966
Sinnbild Bennenung und Bemerkung
Schleifenbegrenzung (loop limit)Anfang
Schleifenbegrenzung (loop limit)Ende
Ablauflinie (flow line)Vorzugsrichtungen (Pfeil optional):a) von oben nach untenb) von links nach rechts
Zusammenführen (junction)Ausgang sollte durch einen Pfeilgekennzeichnet werden
Zusammenführen (junction)Ausgang sollte durch einen Pfeil gekennzeich-net werden
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 18Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Programmablaufplan DIN66001-1966 – Beispiel
02.04.2014 | Vorkurs Informatik – Algorithmen 1 | Seite 15
Beispiel für Programmablaufplan nach DIN66001-1966
Beginn
Ende
Dreckwäsche in die
Waschmaschine
Waschmittelin die
Waschmaschine
Wäschezusammenlegen
Wäschein den
Trockner
Waschmaschineanstellen
Warten
Trockneranstellen
Warten
Wäschein den Schrank
räumen
Fertig? Fertig?
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 19Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Überblick
Der Algorithmusbegriff
Darstellung von Algorithmen
Programmablaufplan DIN66001-1966
Struktogramme
Sortieren
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 20Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Struktogramme
Linearer Ablauf (Sequenz):
Anweisung 1
Anweisung 2
Anweisung 3
Anweisung 4
Anweisung 5
Jede Anweisung wird in einenrechteckigen Strukturblock geschrieben.Strukturblöcke können untereinandergestellt werden.Die Strukturblöcke werden nacheinandervon oben nach unten durchlaufen.
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 21Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Struktogramme – VanillekipferlNimm eine SchüsselFülle 200g Mehl hinein
Fülle 250g Butter hinein
Fülle 180g Zucker hinein
Fülle 200g fein gemahlene Mandeln hinein
Fülle 1 Päckchen Vanillezucker hineinKnete den Inhalt der Schüssel, bis ein glatter Teig entsteht
Forme aus walnussgroßen Stückchen Teig kleine Hörnchen und lege sie aufein mit Papier ausgelegtes Backblech
Schalte Backofen auf 150 ◦CWarte 10 MinutenSchiebe Blech in den BackofenWarte 10-15 MinutenStelle eine Mischung aus einer Tasse Puderzucker und einer Packung Vanil-lezucker herNimm Blech aus Backofen herausBestäube die noch warmen Kipferl mit Mischung aus Puder- und Vanillezu-cker
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 22Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Zweifache Auswahl (alternative Verarbeitung)
Bedingung
Wahr Falsch
Anweisungsblock 1 Anweisungsblock 2
Wenn die Bedingung zutreffend (wahr) ist, wird der Anweisungsblock 1durchlaufen. Trifft die Bedingung nicht zu (falsch), wird derAnweisungsblock 2 durchlaufen. Ein Anweisungsblock kann aus eineroder mehreren Anweisungen bestehen. Austritt erfolgt nach unten nachAbarbeitung des jeweiligen Anweisungsblocks.
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 23Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Zweifache Auswahl (alternative Verarbeitung)
Anweisungen . . .
Fülle ein Päckchen Vanillezucker hinzuKnete den Inhalt der Schüssel, bis ein glatter Teigentsteht
Ist der Teig fest?
Ja Nein
Fortfahren Füge einen Esslöffel Mehlhinzu
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 24Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Verschachtelte zweifache Auswahl
Anweisungen . . .
Wird Mehl für das Rezept benötigt?
Ja Nein
Ist Mehl vorrätig?Ja Nein
Fortfahren Setze Mehl aufEinkaufslisteAnweisungen. . .
∅
Fortfahren
∅
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 25Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Struktogramme – Fallauswahl
Variable
Wert 1Anweisungsblock 1
Wert 2Anweisungsblock 2
Wert nAnweisungsblock n
SonstAlternativblock (op-tional)
Besonders bei mehr als drei abzuprüfenden Bedingungen geeignet. DerWert von "Variable-kann bedingt auf Gleichheit wie auch auf Bereiche(größer/kleiner bei Zahlen) geprüft werden und der entsprechendzutreffende „Fall“ mit dem zugehörigen Anweisungsblock wirddurchlaufen.
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 26Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Abweisende (kopfgesteuerte) Schleife
Anweisungen . . .
Bedingung
Anweisungsblock
Anweisungen . . .
Wiederholungsstruktur mit vorausgehender Bedingungsprüfung:Zuerst wird die Bedingung ausgewertet: Ergibt sie wahr, wird der Schleifenkörper(Anweisungsblock) einmal ausgeführt. Danach wird zum Beginn der Schleifezurückgekehrt und erneut mit der Prüfung der Bedingung begonnen.Ergibt die Auswertung der Bedingung falsch, wird unterhalb des Schleifenkörpersfortgefahren (ohne ihn auszuführen).Häufig benutzt man eine Bedingung, deren Wahrheitswert sich im Laufe der Zeitverändert, z.B. indem Variablen im Schleifenkörper verändert werden, die in derBedingung vorkommen. Man führt also die Anweisungen im Schleifenkörpersolange aus, bis die Bedingung nicht mehr zutrifft.
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 27Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Struktogramme – Abweisende Schleife – Beispiel
Anweisungen . . .
Schiebe das Blech in den BackofenKipferl im Backofen noch nicht goldbraun
warte eine MinuteNimm das Blech aus dem OfenAnweisungen . . .
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 28Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Struktogramme – Durchführung
Probieren Sie diesen Algorithmus doch zu Hause einmal aus.
Wir würden uns im Laufe des Vorkurses über einen Nachweis dererfolgreichen Durchführung freuen!
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 29Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Überblick
Der Algorithmusbegriff
Darstellung von Algorithmen
Programmablaufplan DIN66001-1966
Struktogramme
Sortieren
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 30Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Sortieren – Einführung
Sortieren als eines der Standardprobleme der InformatikVerschiedenste Algorithmen– Unterschiedliche Laufzeiten
– Schlecht im Extremfall, gut im Mittel
Wichtige Unterschiede zum menschlichen SortierenUm sich einen Überblick über mehrere Elemente zu verschaffen,müssen sie einzeln angesehen und Zwischenergebnisse gebildetwerden.
Jedes „sich Merken“ oder „Ablegen“ muss in eigens angelegtenSpeicherstellen stattfinden.
Unterschiedliche Arten des Zugriffs auf das n-te Element.
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 31Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Sortieren
Algorithmus zur Feststellung der kleinsten Zahl in einer Liste
Eingabe: Eine Liste von Zahlen(dargestellt durch einen verdeckt liegenden Stapel mit Zahlenkarten)
Ausgabe: Die kleinste in der Liste vorkommende Zahl
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 32Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Sortieren
Struktogramm für die Feststellung der kleinsten Zahl in einem Stapel
Lege eine Leerkarte zum Merken der kleinsten bisher gefundenen Zahl(lokale Variable)
Schreibe die Zahl auf der ersten Karte des Stapels auf die Leerkarte (Sieist ja in jedem Fall erstmal die kleinste, da wir nur die eine Karte kennen)
Für jede weitere Karte aus dem Stapel
Zahl der Karte < der bisher kleinsten Zahl?
Ja Nein
Schreibe die Zahl als bisher kleinstegefundene Karte auf die Leerkarte
Fahre fort∅
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 33Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Sortieren – Algorithmus?
Ist das beschriebene Verfahren ein Algorithmus?
Das Verfahren ist in einer endlichen Beschreibung durch einStruktogramm beschrieben.
Die Objekte der Berechnung sind die Zahlen des Stapels.
Die elementaren Operationen sind das Vergleichen von zwei Zahlenund das Ablegen des Wertes in einer lokalen Variable. Diese sindmechanisch ausführbar.
Die Reihenfolge der Operationen ist ebenfalls durch dasStruktogramm festgelegt.
Das Verfahren ist ein Algorithmus.
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 34Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Sortieren – Algorithmus?
Ist das beschriebene Verfahren ein Algorithmus?
Das Verfahren ist in einer endlichen Beschreibung durch einStruktogramm beschrieben.
Die Objekte der Berechnung sind die Zahlen des Stapels.
Die elementaren Operationen sind das Vergleichen von zwei Zahlenund das Ablegen des Wertes in einer lokalen Variable. Diese sindmechanisch ausführbar.
Die Reihenfolge der Operationen ist ebenfalls durch dasStruktogramm festgelegt.
Das Verfahren ist ein Algorithmus.
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 34Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Sortieren – Suche der kleinsten Zahl – Liste
Zahlen nicht mehr als Stapel, sondern als Liste
Zahlen liegen aufgedeckt auf dem Tisch
Zahlen haben eine Position in der Liste, beginnend bei 1
Wir können vorne oder hinten etwas an die Liste anhängen
Wir können Zahlen auch aus der Liste raus nehmen
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 35Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Sortieren
Struktogramm für die Feststellung der kleinsten Zahl und deren Positionin einer Liste
Setze Position der momentan kleinsten Zahl auf 1Setze die momentan kleinsten Zahl auf das erste Element der ListeFür jedes Element aus der Liste
Listenelement < der momentan kleinsten Zahl?
Ja Nein
Setze die momentan kleinste Zahlauf das ListenelementSetze die Position der momentankleinsten Zahl auf die Position dermomentan betrachteten Zahl
Fahre fort
∅
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 36Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Sortieren – Selection-Sort
Sortieren mit der Suche des Minimums einer Liste
Grobe Idee:Wir legen eine neue Liste an
Das Minimum und dessen Position wird in der zu sortierenden Listegesucht
Das Minimum wird an die neue Liste angehängt
Das Element an der Stelle des Minimums wird gelöscht
Wir sind fertig, wenn die zu sortierende Liste leer ist
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 37Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Sortieren – Selection-Sort
Eine zusätzliche neue Liste ist nicht nötigIdee:
Man benutzt eine Hilfsvariable, die die Position angibt, ab der die Listebereits sortiert ist. Diese Position teilt die Liste in einen linken, sortiertenTeil (Positionen kleiner der Hilfsvariable) und einen rechten, unsortiertenTeil (Positionen größer gleich der Hilfsvariable)
Zu Beginn zeigt die Hilfsvariable auf das erste Element, die kompletteListe ist also unsortiert (Positionen größer gleich der Hilfsvariable).Solange der Zeiger nicht auf dem letzten Element steht, tue folgendes:– Suche im unsortierten Teil des Feldes das kleinste Element
– Vertausche dieses Element mit dem Element dessen Position derHilfsvariable entspricht
– Versetze die Hilfsvariable um eine Position nach rechts (erhöhe sie um eins)
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 38Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Sortieren – Selection-Sort
Ausgangssituation:
5 2 9 3 1
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 39Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Sortieren – Selection-Sort
Zum Ende der 1. Iteration:
5 2 9 3 1
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 40Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Sortieren – Selection-Sort
Zu Beginn der 2. Iteration:
1 2 9 3 5
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 41Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Sortieren – Selection-Sort
Während der 2. Iteration:
1 2 9 3 5
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 42Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Sortieren – Selection-Sort
Zu Beginn der 3. Iteration:
1 2 9 3 5
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 43Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Sortieren – Selection-Sort
Während der 3. Iteration:
1 2 9 3 5
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 44Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Sortieren – Selection-Sort
Zu Beginn der 4. Iteration:
1 2 3 9 5
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 45Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Sortieren – Selection-Sort
Während der 4. Iteration:
1 2 3 9 5
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 46Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Sortieren – Selection-Sort
Am Ende der 4. Iteration:
1 2 3 5 9
Das Abbruchkriterium (Hilfsvariable auf dem letzten Element der Liste)ist erfüllt und die Liste damit sortiert.
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 47Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Sortieren – Selection-Sort – Struktogramm
Lege eine Leerkarte (1) zum Merken der Position ab der noch sortiertwerden mussSchreibe die 1 auf Leerkarte (1) (das gesamte Feld ist unsortiert)
Lege eine Leerkarte (2) als Zwischenspeicher für die Austauschoperation
Lege eine Leerkarte (3) als Zwischenspeicher für die Position des kleinstenElementsLeerkarte (1) nicht der Position des letzten Elements der Liste entspricht
Suche im unsortierten Teil des Feldes (rechts des Zeigers) das kleinsteElement und speichere die Position auf Leerkarte (3)
Sichere den Wert der ersten noch nicht sortierten Karte (Position aufLeerkarte (1)) im Zwischenspeicher für die Austauschoperation (Leer-karte 2)
Überschreibe den Wert der ersten noch nicht sortierten Karte (Positionauf Leerkarte (1)) mit dem gefundenen kleinsten Wert (Position aufLeerkarte (3))
Überschreibe die ursprüngliche Position des kleinsten Wertes (Positionauf Leerkarte (3)) mit dem Wert im Zwischenspeicher für die Austau-schoperation
Erhöhe den Wert auf Leerkarte (1) um eins
Sortieren – Selection-Sort – Struktogramm
Lege eine Leerkarte (1) zum Merken der Position ab der noch sortiertwerden mussSchreibe die 1 auf Leerkarte (1) (das gesamte Feld ist unsortiert)
Lege eine Leerkarte (2) als Zwischenspeicher für die Austauschoperation
Lege eine Leerkarte (3) als Zwischenspeicher für die Position des kleinstenElementsLeerkarte (1) nicht der Position des letzten Elements der Liste entspricht
Suche im unsortierten Teil des Feldes (rechts des Zeigers) das kleinsteElement und speichere die Position auf Leerkarte (3)
Sichere den Wert der ersten noch nicht sortierten Karte (Position aufLeerkarte (1)) im Zwischenspeicher für die Austauschoperation (Leer-karte 2)
Überschreibe den Wert der ersten noch nicht sortierten Karte (Positionauf Leerkarte (1)) mit dem gefundenen kleinsten Wert (Position aufLeerkarte (3))
Überschreibe die ursprüngliche Position des kleinsten Wertes (Positionauf Leerkarte (3)) mit dem Wert im Zwischenspeicher für die Austau-schoperation
Erhöhe den Wert auf Leerkarte (1) um eins
Sortieren – Selection-Sort – Austauschoperation
Lege eine Leerkarte (3) als Zwischenspeicher für die Position deskleinsten Elements
5 2 9 3 1
1Leerkarte (1), Position des ersten unsortiertenWertes
Leerkarte (2), Zwischenspeicher für Austausch-operation
Leerkarte (3), Zwischenspeicher für die Positiondes kleinsten Elements
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 50Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Sortieren – Selection-Sort – Struktogramm
Lege eine Leerkarte (1) zum Merken der Position ab der noch sortiertwerden mussSchreibe die 1 auf Leerkarte (1) (das gesamte Feld ist unsortiert)
Lege eine Leerkarte (2) als Zwischenspeicher für die Austauschoperation
Lege eine Leerkarte (3) als Zwischenspeicher für die Position des kleinstenElementsLeerkarte (1) nicht der Position des letzten Elements der Liste entspricht
Suche im unsortierten Teil des Feldes (rechts des Zeigers) das kleinsteElement und speichere die Position auf Leerkarte (3)
Sichere den Wert der ersten noch nicht sortierten Karte (Position aufLeerkarte (1)) im Zwischenspeicher für die Austauschoperation (Leer-karte 2)
Überschreibe den Wert der ersten noch nicht sortierten Karte (Positionauf Leerkarte (1)) mit dem gefundenen kleinsten Wert (Position aufLeerkarte (3))
Überschreibe die ursprüngliche Position des kleinsten Wertes (Positionauf Leerkarte (3)) mit dem Wert im Zwischenspeicher für die Austau-schoperation
Erhöhe den Wert auf Leerkarte (1) um eins
Sortieren – Selection-Sort – Austauschoperation
Suche im unsortierten Teil des Feldes (rechts des Zeigers) das kleinsteElement und speichere die Position auf Leerkarte (3)
5 2 9 3 1
1
5
Leerkarte (1), Position des ersten unsortiertenWertes
Leerkarte (2), Zwischenspeicher für Austausch-operation
Leerkarte (3), Zwischenspeicher für die Positiondes kleinsten Elements
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 52Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Sortieren – Selection-Sort – Struktogramm
Lege eine Leerkarte (1) zum Merken der Position ab der noch sortiertwerden mussSchreibe die 1 auf Leerkarte (1) (das gesamte Feld ist unsortiert)
Lege eine Leerkarte (2) als Zwischenspeicher für die Austauschoperation
Lege eine Leerkarte (3) als Zwischenspeicher für die Position des kleinstenElementsLeerkarte (1) nicht der Position des letzten Elements der Liste entspricht
Suche im unsortierten Teil des Feldes (rechts des Zeigers) das kleinsteElement und speichere die Position auf Leerkarte (3)
Sichere den Wert der ersten noch nicht sortierten Karte (Position aufLeerkarte (1)) im Zwischenspeicher für die Austauschoperation (Leer-karte 2)
Überschreibe den Wert der ersten noch nicht sortierten Karte (Positionauf Leerkarte (1)) mit dem gefundenen kleinsten Wert (Position aufLeerkarte (3))
Überschreibe die ursprüngliche Position des kleinsten Wertes (Positionauf Leerkarte (3)) mit dem Wert im Zwischenspeicher für die Austau-schoperation
Erhöhe den Wert auf Leerkarte (1) um eins
Sortieren – Selection-Sort – Austauschoperation
Sichere den Wert der ersten noch nicht sortierten Karte (Position aufLeerkarte (1)) im Zwischenspeicher für die Austauschoperation(Leerkarte 2)
5 2 9 3 1
1
5
5
Leerkarte (1), Position des ersten unsortiertenWertes
Leerkarte (2), Zwischenspeicher für Austausch-operation
Leerkarte (3), Zwischenspeicher für die Positiondes kleinsten Elements
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 54Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Sortieren – Selection-Sort – Struktogramm
Lege eine Leerkarte (1) zum Merken der Position ab der noch sortiertwerden mussSchreibe die 1 auf Leerkarte (1) (das gesamte Feld ist unsortiert)
Lege eine Leerkarte (2) als Zwischenspeicher für die Austauschoperation
Lege eine Leerkarte (3) als Zwischenspeicher für die Position des kleinstenElementsLeerkarte (1) nicht der Position des letzten Elements der Liste entspricht
Suche im unsortierten Teil des Feldes (rechts des Zeigers) das kleinsteElement und speichere die Position auf Leerkarte (3)
Sichere den Wert der ersten noch nicht sortierten Karte (Position aufLeerkarte (1)) im Zwischenspeicher für die Austauschoperation (Leer-karte 2)
Überschreibe den Wert der ersten noch nicht sortierten Karte (Positionauf Leerkarte (1)) mit dem gefundenen kleinsten Wert (Position aufLeerkarte (3))
Überschreibe die ursprüngliche Position des kleinsten Wertes (Positionauf Leerkarte (3)) mit dem Wert im Zwischenspeicher für die Austau-schoperation
Erhöhe den Wert auf Leerkarte (1) um eins
Sortieren – Selection-Sort – Austauschoperation
Überschreibe den Wert der ersten noch nicht sortierten Karte (Positionauf Leerkarte (1)) mit dem gefundenen kleinsten Wert (Position aufLeerkarte (3))
1 2 9 3 1
1
5
5
Leerkarte (1), Position des ersten unsortiertenWertes
Leerkarte (2), Zwischenspeicher für Austausch-operation
Leerkarte (3), Zwischenspeicher für die Positiondes kleinsten Elements
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 56Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Sortieren – Selection-Sort – Struktogramm
Lege eine Leerkarte (1) zum Merken der Position ab der noch sortiertwerden mussSchreibe die 1 auf Leerkarte (1) (das gesamte Feld ist unsortiert)
Lege eine Leerkarte (2) als Zwischenspeicher für die Austauschoperation
Lege eine Leerkarte (3) als Zwischenspeicher für die Position des kleinstenElementsLeerkarte (1) nicht der Position des letzten Elements der Liste entspricht
Suche im unsortierten Teil des Feldes (rechts des Zeigers) das kleinsteElement und speichere die Position auf Leerkarte (3)
Sichere den Wert der ersten noch nicht sortierten Karte (Position aufLeerkarte (1)) im Zwischenspeicher für die Austauschoperation (Leer-karte 2)
Überschreibe den Wert der ersten noch nicht sortierten Karte (Positionauf Leerkarte (1)) mit dem gefundenen kleinsten Wert (Position aufLeerkarte (3))
Überschreibe die ursprüngliche Position des kleinsten Wertes (Positionauf Leerkarte (3)) mit dem Wert im Zwischenspeicher für die Austau-schoperation
Erhöhe den Wert auf Leerkarte (1) um eins
Sortieren – Selection-Sort – Austauschoperation
Überschreibe die ursprüngliche Position des kleinsten Wertes (Positionauf Leerkarte (3)) mit dem Wert im Zwischenspeicher für dieAustauschoperation
1 2 9 3 5
1
5
5
Leerkarte (1), Position des ersten unsortiertenWertes
Leerkarte (2), Zwischenspeicher für Austausch-operation
Leerkarte (3), Zwischenspeicher für die Positiondes kleinsten Elements
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 58Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Sortieren – Selection-Sort – Struktogramm
Lege eine Leerkarte (1) zum Merken der Position ab der noch sortiertwerden mussSchreibe die 1 auf Leerkarte (1) (das gesamte Feld ist unsortiert)
Lege eine Leerkarte (2) als Zwischenspeicher für die Austauschoperation
Lege eine Leerkarte (3) als Zwischenspeicher für die Position des kleinstenElementsLeerkarte (1) nicht der Position des letzten Elements der Liste entspricht
Suche im unsortierten Teil des Feldes (rechts des Zeigers) das kleinsteElement und speichere die Position auf Leerkarte (3)
Sichere den Wert der ersten noch nicht sortierten Karte (Position aufLeerkarte (1)) im Zwischenspeicher für die Austauschoperation (Leer-karte 2)
Überschreibe den Wert der ersten noch nicht sortierten Karte (Positionauf Leerkarte (1)) mit dem gefundenen kleinsten Wert (Position aufLeerkarte (3))
Überschreibe die ursprüngliche Position des kleinsten Wertes (Positionauf Leerkarte (3)) mit dem Wert im Zwischenspeicher für die Austau-schoperation
Erhöhe den Wert auf Leerkarte (1) um eins
Sortieren – Selection-Sort – Austauschoperation
Erhöhe den Wert auf Leerkarte (1) um eins
1 2 9 3 5
2
5
5
Leerkarte (1), Position des ersten unsortiertenWertes
Leerkarte (2), Zwischenspeicher für Austausch-operation
Leerkarte (3), Zwischenspeicher für die Positiondes kleinsten Elements
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 60Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Sortieren – Selection-Sort
Ist das beschriebene Verfahren ein Algorithmus?
Das Verfahren ist in einer endlichen Beschreibung durch einStruktogramm gegeben.
Die Objekte der Berechnung sind die Zahlen der Liste.Die Operationen sind:
Finden der kleinsten Zahl einer Menge: Dies sind mechanischausführbar und nicht elementar, aber durch ein Struktogramm näherbeschrieben und in elementare Schritte unterteilt.Schreiben und Lesen von Karten. Dieses ist mechanisch ausführbarund elementar.
Die Reihenfolge der Operationen ist ebenfalls durch dasStruktogramm festgelegt.
Das Verfahren ist ein Algorithmus.
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 61Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Sortieren – Selection-Sort
Ist das beschriebene Verfahren ein Algorithmus?
Das Verfahren ist in einer endlichen Beschreibung durch einStruktogramm gegeben.
Die Objekte der Berechnung sind die Zahlen der Liste.Die Operationen sind:
Finden der kleinsten Zahl einer Menge: Dies sind mechanischausführbar und nicht elementar, aber durch ein Struktogramm näherbeschrieben und in elementare Schritte unterteilt.Schreiben und Lesen von Karten. Dieses ist mechanisch ausführbarund elementar.
Die Reihenfolge der Operationen ist ebenfalls durch dasStruktogramm festgelegt.
Das Verfahren ist ein Algorithmus.
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 61Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Sortieren – Bubble Sort
In einer Wassersäule sind verschieden große Luftblasen. Dieunterste Luftblase steigt nun langsam auf. Während sie an kleinerenproblemlos vorbeikommt, wird sie durch größere gestoppt. Durchden Zusammenprall setzt sich die größere Luftblase in Bewegung,bis auch diese gestoppt wird oder am oberen Säulenende ankommt.Nun setzt sich abermals die unterste Luftblase in Bewegung. Wenndie Wassersäule eine endliche Anzahl Luftblasen enthält, dann kannirgendwann keine Luftblase mehr aufsteigen, da sich über jederLuftblase eine größere Luftblase befindet.Die Luftblasen sind nun von unten (klein) nach oben (groß) sortiert.Wir werden diese Idee auf eine Liste von Zahlen übertragen. DerWert der Zahl repräsentiert die Größe der Luftblase. Der Anfang derListe ist das untere Ende der Wassersäule, das Ende der Liste istdas obere Ende der Wassersäule.
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 62Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Sortieren – Bubble Sort
1. Iteration:
5 3 9 2 1
Die Liste wird von vorne beginnend durchlaufen und die ersten beidenElemente werden miteinander verglichen. Ist das erste Element größerals das zweite Element, dann folgt ein Vertauschen, denn die größerenLuftblasen können an den kleineren vorbei.
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 63Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Sortieren – Bubble Sort
1. Iteration:
3 5 9 2 1
Die kleineren Luftblasen stoßen die größeren Luftblasen an undstoppen selbst dabei. Es findet hier also kein Vertauschen der Zahlen„5“ und „9“ statt. Nun wird die „9“ weiter aufsteigen.
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 64Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Sortieren – Bubble Sort
1. Iteration:
3 5 9 2 1
Der nächste Vergleich führt wieder zu einem Vertauschen, da dieLuftblase mit der Größe 9 an der kleineren Luftblase mit der Größe 2vorbeikommt und weiter aufsteigen kann.
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 65Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Sortieren – Bubble Sort
1. Iteration:
3 5 2 1 9
Der letzte Vergleich führt wieder zu einem Vertauschen. Die Luftblasemit der Größe 9 ist als größte Luftblase an die Oberfläche derWassersäule gestiegen. Wir fahren mit der nächsten Iteration fort.
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 66Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Sortieren – Bubble Sort
2. Iteration:
3 5 2 1 9
Die Luftblase mit der Größe 3 stößt die größere Luftblase an und bleibtselbst dabei stehen. Die größere Luftblase steigt weiter auf, es findetkein Vertauschen statt.
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 67Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Sortieren – Bubble Sort
2. Iteration:
3 2 1 5 9
Am Ende der zweiten Iteration bleibt die Luftblase der Größe 5 an derLuftblase mit der Größe 9 hängen.
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 68Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Sortieren – Bubble Sort
3. Iteration:
2 1 3 5 9
Nach der dritten Iteration sind die größten drei Elemente aufsteigendsortiert.
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 69Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Sortieren – Bubble Sort
4. Iteration:
1 2 3 5 9
Die vierte Iteration sortiert die letzten beiden Elemente. Danach ist dieListe aufsteigend sortiert.
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 70Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Sortieren – Bubble Sort – Struktogramm
Hinweis: a sei die Anzahl der zu sortierenden Zahlen
Reserviere eine Hilfsvariable i für die äußere SchleifeSetze i auf 1Reserviere eine Hilfsvariable j für die innere Schleife
i <= a - 1Setze j auf 1
j <= a - 1
j-te Zahl > j+1te Zahl?
Ja Nein
Tausche Zahl j mit Zahl j+1 Fahre fort
Erhöhe j um eins
Erhöhe i um eins
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 71Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Sortieren – Bubble Sort
Ist das beschriebene Verfahren ein Algorithmus?
Das Verfahren ist in einem endlichen Text durch ein Struktogrammbeschrieben.
Die Objekte der Berechnung sind die Zahlen der Liste.
Die Operationen sind das Vergleichen und Vertauschen zweierZahlen. Diese sind mechanisch ausführbar.
Die Reihenfolge der Operationen ist ebenfalls durch dasStruktogramm festgelegt.
Das Verfahren ist ein Algorithmus.
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 72Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Sortieren – Bubble Sort
Ist das beschriebene Verfahren ein Algorithmus?
Das Verfahren ist in einem endlichen Text durch ein Struktogrammbeschrieben.
Die Objekte der Berechnung sind die Zahlen der Liste.
Die Operationen sind das Vergleichen und Vertauschen zweierZahlen. Diese sind mechanisch ausführbar.
Die Reihenfolge der Operationen ist ebenfalls durch dasStruktogramm festgelegt.
Das Verfahren ist ein Algorithmus.
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 72Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Sortieren – Aufwandsabschätzung
Um den zu leistenden Aufwand für die Durchführung einesAlgorithmus zu bestimmen, muss man sich zuerst die Problemgrößebewusst machen. Sie stellt ein Maß dar, wie schwierig bzw.umfangreich die Aufgabe bzw. das Problem ist.
Üblicherweise wird die Problemgröße mit n benannt.
Für Sortieralgorithmen ist die Problemgröße die Anzahl der zusortierenden Elemente.
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 73Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Sortieren – Aufwandsabschätzung
Für einfache Sortierverfahren ist der Aufwand meist quadratisch zurProblemgröße.
Zu beachten ist hierbei, dass diese Abschätzung nicht allzu genaugenommen werden darf, da konstante Faktoren nicht beachtetwerden.
Wenn wir also von quadratischem Aufwand sprechen, so kann esgenauso gut 100 · n2 sein, als auch 0, 5 · n2 oder auch (n − 1)2.
Es geht aber auch besser . . .
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 74Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme
Danke
Vielen Dank für Ihre Aufmerksamkeit!
23.03.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 75Vorkurs Informatik SoSe 16 Institut für Programmierung
und Reaktive Systeme