Versionshistorie

seit Bestehen dieser Internetseite (Januar 2016, vollständige Änderungsliste hingegen hier):

22. November 2018: Rekursives Naturalmergesort hinzugefügt (Idee siehe Danksagungen bei William A. Greene).

4. November 2018: Positionierung der Werteausgabemitteilungsfensters überarbeitet (in den beiden mit Delphi compilierten Versionen).

31. Oktober 2018: Mergealgorithmus von Heikki Mannila und Esko Ukkonen, zu finden je einmal bei den Merge- und den Naturalmergesorts, überarbeitet. Er ist jetzt (pseudo)rekursiv.

14. September 2018:

  • Von dem in der vorigen Version implementierten Naturalmergesort eine stackfreie Version erstellt. Da diese identisches Visualisierungs- und Laufzeitverhalten hat (außer mehr Vergleichen), liegt sie nur im Quelltext vor.

  • Das vereinfachte Plaselsort kann jetzt nur noch gestartet werden, wenn die Startmenge dafür geeignet ist.

  • Von den Sortierelementen wurde das Merkmal „flag“ entfernt; dessen Funktionalität wird nun vom Merkmal „temppos“ (=temporäre Position) mit übernommen.

15. August 2018:

  • Ein zweites Naturalmergesort, das wie ein einfaches Mergesort aussieht, implementiert. Das neue hat aber im Gegensatz um ersten genau die gleichen Verschmelzungen wie einfaches Naturalmergesort.

  • Das iterative Verschmelzen von Franco P. Preparata und das Verschmelzen von Kanagavelu Sugumar sind jetzt auch bei den Naturalmergesorts verfügbar.

  • Erinnerungsfunktion für die Position des Verarbeitungsformulares im Fenstermodus, wenn das zwischenzeitlich im fensterlosen Modus, also z.B. im Vollbildmodus geschaltet war

  • Bei der Eingabe der Fließkommazahl für den Wachstumsfaktor beim Proportion Extend und Symmetry Partition Sort kann jetzt, egal, ob die deutsch- oder englischsprachige Version, beliebig ein Punkt oder Komma verwandt werden.

  • Werteausgabe etwas vereinfacht. Bei der Angabe der (In-)Stabilität wird nunmehr auch die Anzahl der Stabilitätsinversionen ausgegeben.

  • Stackemulations-Unit etwas überarbeitet

  • Etliche kleine Fehler, vor allem deklarierte, aber überflüssige (nicht verwendete) Variablen bezeitigt. Der größte war, daß das Bedienformular nach der Verarbeitung nicht wieder erschien, wenn es keine Ausgaben gibt.

17. Juli 2018:

  • Das Shufflemerge von Elif Acar & Co. ist jetzt auch bei den Naturalmergesorts vorhanden. Grundlage ist eine Prozedur, die das Verschmelzen immer gleichgroßer Teilbereiche gewährleistet.

  • Das erweiterte Scratchmerge nach Jyrki Katajanen & Co. ist nunmehr in zwei Varianten bei den Naturalmergesorts vertreten.

  • Wenige kleine Fehler bereinigt.

3. Mai 2018:

  • Die „Anzahl n verschiedener Elemente“ ist jetzt mit Klick auf eine weitere Checkbox schnell und einfach wieder (re-)maximierbar

  • Algorithmus hinter dem siebenten Eintrag der Combobox „Struktur der Startmenge“ korrigiert

21. März 2018: Nur interne Änderungen ohne Einfluß auf Bedienung und / oder Animation:

  • beim Kompositionsmerge den Stack ähnlich der Beschreibung (s.u.) entfernt

  • Rekursionen beseitigt (Unterprogramme: BuildSubHeap, BuildCraigsSubHeap, PushDown, PushDownLeftFirst, StableBinaryPivotTP (alle von Craig Brown))

  • Prozeduren BuildSubHeap und BuildCraigsSubHeap wegen großer Ähnlichkeit zur Prozedur Build_Craigs_SubHeap_2_in_1 vereinheitlicht / zusammengefaßt

14. März 2018:

  • Ein Merge- und ein Naturalmergesort mit dem Kompositionsmerge nach Bransilav Durian und S. Dvorák (s.  Danksagungen ) implementiert

  • Nicht nur die Verschiebungen, sondern auch die Vertauschungen können jetzt korrekt dargestellt werden (zusammengefaßt unter „richtiges Bewegen“).

  • Etliche Detailkorrekturen.

8. März 2018:

  • Zwei Mergesorts und ein Naturalmergesort mit dem erweiterten Mergealgorithmus nach Jyrki Katajainen & Co. (Quelle s.  Danksagungen ) implementiert.

  • Etliche kleine, subtile Fehler beseitigt.

2. März 2018: Die Möglichkeit, mit jedem Mausklick auf das Verarbeitungsformular eine neue Startmenge zu erstellen, kann jetzt mit einer weiteren Checkbox abgeschaltet werden.

1. März 2018: 6 weitere Mergingalgorithmen nach Jyrki Katajainen & Co. (Quelle s. Danksagungen) hinzugefügt:

  • Originalalgorithmus

  • wie Original, jedoch inverser Sortierverlauf, aber gleiches Sortierergebnis

  • Variante, die mit nur einem Mergingalgorithmus auskommt

  • inverse Variante der Variante zuvor

  • stabilisierbare Variante der Originalversion

  • inverse stabilisierbare Variante der Originalversion

11. Februar 2018:

  • Sind beim Blöcketausch(en) die Blöcke gleich groß, können sie nunmehr optional unabhängig vom gewählten Blocktauschalgorithmus immer schnell getauscht werden.

  • Weitere Option: Bei Verschiebeoperationen kann jetzt - wie es eigentlich korrekt ist - das Startelement nach dem Verschieben eingenullt und dieses auch angezeigt werden.

6. Februar 2018:

  • Ein weiteres asymmetrisches Mergesort mit konstantem Teilungsverhältnis, aber zufälliger Anordnung der längeren und kürzeren Teilarrays, hinzugefügt.

  • Zwei bidirektionale Insertionsorts implementiert.

  • Bidirektionales Insertionsort der Liste der Vorsortierungsalgorithmen hinzugefügt.

4. Februar 2018: Drei Mergesorts mit asymmetrischer Partitionierung hinzugefügt, zwei davon erlauben eine Eingabe zur Variation des Größenverhältnisses der Teilarrays.

26. Januar 2018: zwei einfache, schnelle In-Situ-Blocktauschalgorithmen (einer auf Basis von Verschiebungen, der andere auf der Basis von Vertauschungen) implementiert

22. Januar 2018 (Quellen s. Danksagungen): Drei Verschmelzungsalgorithmen hinzugefügt

  • Vereinfachter Algorithmus nach Heikki Mannila und Esko Ukkonen, der nicht blockweise, sondern kontinuierlich verschmilzt

  • rekursives Verschmelzen nach Viktor J. Duwanenko

  • Verschmelzen nach Kanagavelu Sugumar; da dieses Verschmelzen nicht für die Fälle geeignet ist, in denen das rechte Teilarray größer als das linke ist, ist es für Naturalmergesort ungeeignet und wird deshalb nur beim Mergesort angeboten

11. Januar 2018 (Quellen s. Danksagungen):

  • Merge- und Naturalmergesort mit Verschmelzungsalgorithmus nach Heikki Mannila und Esko Ukkonen hinzugefügt

  • VRF(V-RE-FR-)Sort von vier indischen Informatikern implementiert

6. Januar 2018: 4 neue Sortieralgorithmen hinzugefügt (Quellen s. Danksagungen):

  • schnelles Heapsort mit rekursiver Heapprozedur und Bottom-Up-Heapsortvariante, beide von Ingo Wegener

  • Enhanced Mergesort von drei indischen Informatikern

  • Scratchmerge (nach der Idee eines Scratchpades von Alexander Semjonovitsch Kronrod) bei den Naturalmergesorts

2. Januar 2018: Die Option, mit der einzugebende Parameter hinzu- oder abgeschaltet werden können, ist nunmehr nur noch bei den dafür relevanten Sortieralgorithmen freigeschaltet.

31. Dezember 2017: Stabiles Quicksort mit einem stabilen Partitionsalgorithmus und einen weiteren Blockswappingalgorithmus, beide nach Ronald Linn Rivest, implementiert

28. Dezember 2017:

  • weiteres bedingt stabiles Heapsort von Hartwig Thomas (s.  Danksagungen ) sowie ein Merge- und ein Naturalmergesort mit Mergealgorithmus von Vaughan Donald Pratt (s. Danksagungen) implementiert

  • Rekursion beim Mergealgorithmus von Jingchao Chen und beim Mergesort von Andrej Astrelin und Christopher Swenson entfernt

17. Dezember 2017: 38 Sortieralgorithmen über zusätzlichen optionalen Vergleich der Startpositionen der Sortieralgorithmen  bedingt stabilisiert .

10. Dezember 2017: Die globale Stabilisierung nach dem Sortieren wurde beschleunigt; sie funktioniert jetzt außerdem auch nach den simultanen Sortieralgorithmen

5. Dezember 2017:

  • Shufflemerge von Elif Acar & Co. „stabilisiert“

  • instabiles Shufflemerge von John Ellis und Minko Markow entfernt (stabile Variante bleibt)

  • Eine zusätzliche „Stabilisierung“ kann jetzt bei ausgewählten instabilen Sortieralgorithmen während des Sortierens oder generell nach dem Ende einer jeden Sortierung zugeschaltet werden.

2. Dezember 2017:

  • das zuvor implementierte Partitionsmerge „stabilisiert“

  • Parametereingabe für diesen Mergingalgorithmus hinzugefügt

23. November 2017: Blockmerge sowie stabiles und instabiles Partitionsmerge nach Luis Isidoro Trabb Pardo (s.  Danksagungen ) gemäß dieser Anleitung implementiert.

16. Oktober 2017:

  • Das Mergesort mit dem Verschmelzen von Elif Acar & Co. sowie das mit dem iterativen Verschmelzen von F. Preparata funktionieren jetzt mit allen Elementeanzahlen (falls die zu verschmelzenden Teilarrays ungleich sind, wird einfaches Verschmelzen verwendet).

  • mehrere Fehler beseitigt

14. Oktober 2017:

  • Merge- und Naturalmergesort mit rekursivem Verschmelzen von Franco P. Preparata implementiert (s.  Danksagungen )

  • Mergesort mit iterativem Verschmelzen von Franco P. Preparata implementiert

  • bei den Blockswapping-/Arrayrotationsalgorithmen einen Rechtsverschiebealgorithmus (Rightshift) von Franco P. Preparata hinzugefügt

  • Die Initialisierung des Zufallszahlengenerators beim Programmstart ist jetzt optional (aber immer noch voreingestellt).

7. Oktober 2017: folgende vier neue Sortieralgorithmen hinzugefügt / implementiert:

2. Oktober 2017: folgende vier neue Sortieralgorithmen hinzugefügt / implementiert:

  • Heapsortvariante von Robert W. Floyd und inverses Heapsort gemäß diesen Vorlesungsfolien; das inverse Heapsort wurde zudem auch noch in die Vorsortierungsalgorithmenliste eingefügt

  • halbstabiles Quicksort (nur die linke Partition ist stabil) gemäß diesem Quelltext

  • stabiles Quicksort nach Thomas Müller, diesem Java-Projekt entnommen

27. September 2017:

  • 5weitere Quicksortderivate hinzugefügt (alle bei den Quicksorts zu finden): 3-Wege-Quicksort, Meansort, IQ-, O- und GO-Sort (alle entnommen der Ausarbeitung von Lutz Wegner, s. Danksagungen).
  • Korrektur mehrerer kleiner Fehler.

31. August 2017: Patiencesort in situ (2 Varianten) und ex situ implementiert.

23. August 2017: Quelltext überarbeitet, den Code (auch den ausführungsrelevanten) dabei etwas komprimiert.

14. August 2017: Den neuen Mergealgorithmus von Prof. John Ellis und Prof. Ulrike Stege erneut überarbeitet (2 weitere Fehler korrigiert und ihn zudem „stabilisiert“, d.h., stabil gemacht).

6. August 2017:

  • Merge- und Naturalmergesort mit Duelmerge implementiert. Dieser Mergealgorithmus stammt von Prof. Dr. Sergio Luis Sardi Mergen und Prof. Dr. Viviane Pereira Moreira, s.  Danksagungen .
  • Den neuen Mergealgorithmus von Prof. John Ellis und Prof. Ulrike Stege geringfügig korrigiert und ergänzt, ist aber leider immer noch instabil.
  • Die Bremse während der Verarbeitung wird nun mit Druck auf „-“ halbiert (vorher um 1 vermindert) und auf „+“ verdoppelt (vorher um 1 erhöht), zudem ist der Maximalwert der Bremse jetzt 9999, und auch bei großer Bremse kann nunmehr die Verarbeitung unverzüglich abgebrochen werden.

12. Juli 2017: Ein Merge- und ein Naturalmergesort jeweils mit einem neuen Mergingalgorithmus nach Prof. John Ellis und Prof. Ulrike Stege (s. Danksagungen) gemäß dieser Anleitung implementiert. Laut Beschreibung ist er stabil, jedoch konnte die Stabilität in dieser Implementation nicht erreicht werden, Grund unbekannt. Wird sobald wie möglich verbessert.

9. Juli 2017:

  • Korrektur: Das perfekte Außen- und Innenmischen waren vertauscht.

  • 4 weitere Einträge auf Basis des perfekten Mischens der Liste der Sortier- und Mischungs- sowie der Vorsortier- und -mischungsalgorithmen hinzugefügt.

7. Juli 2017: Fehler beseitigt, der auftrat, wenn bei den Zufallszahlen die Anzahl n verschiedener Elemente auf 1 gesetzt und danach für die Werteerzeugung die natürlichen Zahlen (je einmal) gewählt wurde(n).

25. Juni 2017:

  • Shufflemerge von John Ellis und Minko Markow von rekursiver in iterative Form umgewandelt, dafür eine weitere, flexiblere Stackemulatorklasse (auf der Bais von Zeigern / Pointern) implementiert
  • beide Stackemulatorklassen (die, die nur mit dem Datentyp „word“ arbeitet und die neuere auf der Basis von Zeigern) in eine Extraunit ausgelagert
  •  das zweite Shufflemerge (das der drei türkischen Informatiker) leicht vereinfacht

19. Juni 2017:

1. Juni 2017: Mergesort mit In-Situ-Verschmelzen aus dem zuvor genannten Projekt extrahiert und in dieses Projekt implementiert.

29. Mai 2017:

  • Fehlerkorrektur: Grailmerge „stabilisiert“.

  • Kontextsensitive Hilfe für die Radiogruppe zur Auswahl des Blocktauschalgorithmus' hinzugefügt.

28. Mai 2017:

  • Grailsort in eine originale Variante mit dem Grailmerge und eine mit dem einfachen Verschmelzen aufgespaltet.

  • Merge- und Naturalmergesort je einmal mit dem Grailmerge hinzugefügt.

  • Sqrt-Sort aus dem Projekt wie im Eintrag zuvor implementiert.

  • Rekursives Grailmerge aus demselben Projekt für Grail-, Merge- und Naturalmergesort implementiert.

16. Mai 2017:

  • Grail-, Tim- und Naturalmergesort (das wie einfaches Mergesort aussieht) implementiert. Die beiden erstgenannten wurden aus diesem bzw. jenem Projekt extrahiert.

  • Fehler beseitigt: Beim häufigen Klicken auf das Prozeßformular vor dem Sortieren bzw. Mischen wurden die etliche Startmengenstrukturen manchmal nicht korrekt dargestellt.

3. Mai 2017:

  • Fehler beseitigt, die meistens auftraten, wenn bei den letzten beiden stabilen Quicksorts die Puffergrößen größer als 0 eingegeben wurden.

  • Die aus dem originalen Quelltext übernommene Stackersatzstruktur (Array) für die drei stabilen Quicksorts durch die „hauseigene“ Stackemulatorklasse ersetzt.

27. April 2017:

  • Bei den Vertauschungen wird jetzt nicht mehr der Verschiebungszähler um drei (Vertauschungen bestehen aus drei Verschiebungen), sondern ein eigens eingeführter Vertauschungszähler um ein erhöht.

  • Bubble- und Insertionssort vorwärts und invers liegen jetzt in je einer Variante auf der Basis von Verschiebungen und je einer Variante auf der Basis von Vertauschungen vor.

23. April 2017: Stabiles Heapsort und eine weitere Smoothsort-Variante gemäß diesem bzw. jenem Projekt implementiert.

19. April 2017:

  • Zwei weitere stabile Quicksorts gemäß diesem bzw. jenem Projekt implementiert.

  • wenige geringfügige Detailverbesserungen

11. April 2017:

  • Stabiles Quicksort gemäß diesem bzw. jenem Projekt implementiert.

  • Die Startparameter (für manche Sortieralgorithmen relevant) werden nun in die optionale Speicherung und Ladung der Einstellungen einbezogen.

  • Kleine Fehler beseitigt.

5. April 2017: In-Situ-Variante des Splitsorts implementiert.

1. April 2017:

  • Zähler für die Threads und optionales Anzeigenlassen dieses Wertes nach Sortierende implementiert.

  • Fehler, daß manche simultanen Bitonicmergesorts nicht starteten, korrigiert.

29. März 2017:

  • Das iterative und das rekursive simultane Bitonicmergesort haben jetzt - neben dem einfachen bitonischen Verschmelzen, das sie als Verschmelzungsverfahren schon hatten - jetzt je auch ein iteratives simultanes bitonisches und ein rekursives simultanes bitonischesVerschmelzen bekommen (Simultaneität auf zwei Ebenen).

  • Das Merge- und das Naturalmergesort mit dem stabilen Verschmelzen von Ellis und Markov haben jetzt je auch eine instabile Versions des Verschmelzens der genannten Autoren.

  • Nicht nur die Position des Bedienformulares, wie es schon lang möglich ist, sondern nunmehr auch die Position des Prozeßformulares (das, auf dem das Sortieren bzw. Mischen stattfinden) wird jetzt vom optionalen Speichern und Laden erfaßt, sofern das Prozeßformular einen umgrenzten bzw. Fenstermodus hat und mithin verschiebbar ist.

20. März 2017:

  • In die Liste der Vorsortierungsalgorithmen wurden Merge- und Quicksort je invers und zufällig sowie zwei weitere Mischungsalgorithmen (Fisher-Yates 1.2 und 2.2) aufgenommen.
  • Mit einer weiteren Option (Checkbox) kann nun eingestellt werden, daß die Elemente nur dann getauscht werden, wenn sie ungleich (groß) sind.
  • Quelltext überarbeitet: Die Algorithmen, die von der Vorsortierung und von der eigentlichen Sortierung benutzt werden, in gemeinsame(n) Unterprogramme(n) vereint.

  • Fehlerbeseitigung: Auch die zufallsbasierten Startmengen können jetzt wieder alle Strukturen der Startmenge bilden.

17. März 2017:

  • Smoothsort der Liste der Vorsortieralgorithmen hinzugefügt.

  • 3 weitere Bitonicmergesorts implementiert (stehen am Ende der Bitonicmergesorts: iterativ einfach sowie iterativ und rekursiv simultan).

14. März 2017:

  • Der Mauscursor zur Laufzeit der Verarbeitung (Sortieren bzw. Mischen) kann jetzt zwischen „unsichtbar“ und „hintergrundaktiv“ umgeschaltet werden.

  • Sofern der Mauscursor während der Verarbeitung sichtbar ist, wird nun auch bei den simultanen Sortiervorgängen korrekt angezeigt (Standard: Pfeil und Sanduhr).

  • Simultanes Shellsort mit eigenem Startthread korrigiert, es blieb zuvor stehen.

13. März 2017:

  • Heapsort-Variante von Dr. Hartwig Thomas implementiert.

  • Das Smoothsort von Keith Schwarz und das von Hartwig Thomas sind jetzt abbrechenbar.

  • Die Ini-Dateien für das optionale Speichern des Startzustandes bzw. der Startoptionen werden, sofern sie nicht „neben“ der Programmdatei abgespeichert werden können (also im selben Verzeichnis), jetzt nicht mehr im Temp-, sondern im Anwendungsdaten-/„AppData“-Verzeichnis des jeweiligen Benutzers gespeichert.

  • Mauscursor „Hintergrundaktivität“ während der Verarbeitung (Sortierens bzw. Mischen), das ist in der Standardeinstellung ein Pfeil inklusive Sanduhr

11. März 2017: Smoothsort von Hartwig Thomas (Klasse und Routinen) geringfügig überarbeitet und optimiert

10. März 2017:

  • Smoothsort-Variante von Dr. Hartwig Thomas implementiert
  • Implementation des Smoothsorts von Keith Schwarz geringfügig überarbeitet (Booleanarray wurde durch Integerzahl ersetzt)
  • 3 Fehler korrigiert: Die Schleifenanzahl beim Binärmischen als Vormischungsalgorithmus ist jetzt auf das sinnvolle Maximum begrenzt, und der Sortier- bzw. Mischungsalgorithmus wird jetzt auch nach dem Start eingelesen, sofern die Optionen gespeichert werden. Weiterhin wird das Formular nun hoffentlich endlich an der Position placiert, an der es sich bei gespeicherten Optionen zuletzt befunden hatte.

5. März 2017:

  • Die kontextsensitive Hilfe funktioniert jetzt auch beim Lazaruscompilat (halbwegs), dazu war allerdings die Verwendung eines aktuellen Lazarus' erforderlich.
  • Multithreadingalgorithmen überarbeitet, müßten jetzt noch stabiler laufen
  • Beseitigung weiterer kleiner Fehler und Ungenauigkeiten

3. März 2017:

  • Kontextsensitive Hilfe für einige Bedienelemente implementiert, ist zuschaltbar (funktioniert im Lazarus-Compilat allerdings nicht zufriedenstellend).
  • Checkbox zum Ab-/Zuschalten der Vergleichseinfärbung wiedereingeführt.
  • Layout der Lazarus-Version überarbeitet, ist jetzt an die beiden Delphi-Versionen angepaßt.

2. März 2017:

  • Neues Merge- und Naturalmergesort mit einem einfachen (instabilen und langsamen) Verschmelzen hinzugefügt.
  • 3 neue Vorsortieralgorithmen (Bubble, Insertion und Selection je invers).
  • Die Bubblesort-Variante ist in Wahrheit / Wirklichkeit ein Simplesort und steht jetzt als Simplesort1 in der Algorithmenliste, das ursprüngliche Simplesort1 ist nun Simplesort 1 invers.
  • Quelltext überarbeitet, Änderungen an der Algorithmenliste sind nunmehr schneller und fehlerärmer möglich
  • Fehlerkorrekturen: Quicksort in Mischprozedur (Vorbereitung der Menge zum Sortieren bzw. Mischen) und instabiles Trippelsort, Fehlerquelle beim Abbrechen des stabilen Mergingalgorithmus von Kim/Kutzner 2006 beseitigt (ggf. Division durch 0), lag an der Implementation, nicht am Algorithmus selbst

25. Februar 2017:

  • 3 weitere (simple) Blocktauschalgorithmen hinzugefügt.
  • Die (optionale, wenn Ausgaben erfolgen) Ausgabemessagebox wird jetzt so hinter dem Mauscursor positioniert, daß die Schaltfläche „OK“ unter dem Mauscursor sich befindet.
  • Fehlerkorrektur: Das Bedienformular wurde, sofern die Einstellungen automatisch (beim Programmende) gespeichert und (beim Programmstart) geladen werden, nicht an die letzte Stelle positioniert, sondern immer zentriert.

24. Februar 2017:

  • Das Bedienformulares erhielt ein neues, übersichtlicheres, besser strukturiertes Layout (nicht in der Lazarus-Version)
  • simultanes Bitonicnaturalmergesort implementiert
  • alternatives Smoothsort gemäß dieser Vorlage (C++-Quelltext) implementiert
  • auf Grundlage der Tastenkombination „Alt+F4“, gesendet direkt auf das Sortier-/Mischungsformular, außerdem gesendet über die Taskleiste und nach „Task beenden“ im Taskmanager wird das Programm nunmehr korrekt beendet

11. Februar 2017:

  • mehrere Sortieralgorithmen (Merge-, Oet-, Partit- und Shakersort) der Liste der Vorsortier-/-mischungsalgorithmen hinzugefügt
  • Die Liste der Vorsortier-/-mischungsalgorithmen ist wegen der neuen Einträge nicht mehr in einer Radiogruppe, sondern ab jetzt in einer Combobox enthalten. Damit ist wieder mehr Platz auf dem Bedienformular, dessen Layout etwas umgestaltet wurde.
  • mehrere kleine Fehlerbereinigungen

3. Februar 2017:

  • 10 weitere Varianten des Bitonicmergesorts, davon 4 mit simultanem Verschmelzen, sowie Mergesort mit zufälliger Verschmelzungsreihenfolge implementiert
  • Quicksort in die Liste der Vorsortierungen aufgenommen, das Maß der Vorsortierung kann über die Anzahl der Vorsortierschleifen justiert werden. Das ist eigentlich gemogelt, weil Quicksort rekursiv und eben nicht schleifenbarsiert ist, mit der iterierten Variante ist es aber doch möglich.
  • kleine Fehlerbereinigungen

27. Januar 2017:

  • simultanes Pancakesort implementiert
  • Simultanes Quick-, Radix- (MSD rekursiv) und Splitsort überarbeitet und verbessert. Die Interthreadkommunikation ist bei diesen jetzt nicht mehr nur einseitig von den Eltern- zu den Kindsthreads, sondern wie bei den simultanen Mergesorts bidirektional (Duplex).
  • je einen Fehler im simultanen und nichtsimultanen iterativem Mergesort korrigiert

24. Januar 2017:

  • Bitonicmerge- und -naturalmergesort mit iterativem Verschmelzen / Merging (mit rekursivem war es schon vorhanden) implementiert - es entspricht dem sog. bitonischen Sortiernetz oder Bitonicsort
  • kleine Fehlerkorrekturen

21. Januar 2017:

  • 5 neue Sortierverfahren (Circlesort invers, zufällig ablaufend und simultan, Splitsort invers und stackoptimiert)
  • Circle- und Cyclesort der Liste (Radiogroup) der Vorsortieralgorithmen hinzugefügt
  • kleine Fehlerkorrekturen und Optimierungen

15. Januar 2017:

  • Circle- und Cyclesort gemäß dieser Veröffentlichung implementiert
  • kleine Fehlerkorrekturen, Quelltext überarbeitet (Anzahl der Unterprogramme reduziert)

9. Januar 2017:

  • 5 Multithreading-Sortieralgorithmen (Comb-, Insertion-, Oet- und Shakersort, letzteres aus Main- und mit extra Startthread) implementiert
  • kleine Fehlerkorrekturen

2. Januar 2017:

  • je eine Bubble- und eine Trippel-Sort-Variante (beide schneller als ihre stabilen Pendants, dafür instabil) hinzugefügt
  • 2 simultane Partitsorts implementiert (benötigen je maximal zwei parallele Sortierthreads, sodaß die Eingabe des Parameters für die Maximalanzahl gleichzeitiger Threads nur mit 1 sinnvoll ist, wenn eine Begrenzung erwünscht ist/wird)
  • Multithreadingalgorithmen /-klassen überarbeitet (deren interne Anzahl reduziert, die Anzahl der auswählbaren Multithreadingsortieralgorithmen blieb davon unberührt)
  • weitere kleine Codeoptimierungen und Fehlerkorrekturen

23. Dezember 2016:

  • Paralleles Selection- und Splitsort implementiert
  • Checkbox für Vergleichseinfärbungen entfernt
  • Die Vergleichseinfärbungen stehen jetzt (bei) jedem Sortieralgorithmus zur Verfügung; die Umschaltung dafür erfolgt weiterhin über den Tastendruck „V“ (bzw. „C“ in der englischsprachigen Version) während des Sortierens.
  • kleine Fehlerkorrekturen und Codeoptimierungen

15. Dezember 2016: Multithreadingalgorithmen verbessert

11. Dezember 2016: 6 weitere Werterzeugungsmethoden für die Startmenge(n) hinzugefügt

7. Dezember 2016: Implementation der inversen Variante des Slowsorts.

2.Dezember 2016:

  • Die beiden Multithreading-Mergesorts sind in den beiden Delphi-Compilaten jetzt (wieder) mit beliebigen Elementeanzahlen zu betreiben. Die Korrektur erfolgte, indem die maximale Stackgröße von ihrem Minimum (16384 bzw. 4000h) um 1 erhöht wurde. Beim Lazarus-Compilat funktioniert das beim 32-Bit-Compilat hingegen nicht, die Begrenzung der Elementeanzahlen muß bei diesem daher bestehenbleiben.

  • Kleine Fehler korrigiert.

30. November 2016: Multithreading-Sortieralgorithmen geringfügig überarbeitet

24. November 2016:

  • Treesort gemäß dieser Implementation hinzugefügt (der Dank geht an das Delphipraxis-Forumsmitglied „Blup“).
  • Die Anzahl zu sortierender Elemente bei den beiden simultanen Mergesorts ist nun auf 1024 bzw. 2048 begrenzt.
  • Mehrere Fehler korrigiert, Quelltext erheblich überarbeitet (Anzahl der Arrays verringert).

13. November 2016:

  • Fehlerkorrektur: Die Vergleiche bei Slow- und Trippelsort werden (nach Druck auf „V“ in der deutschen bzw. „C“ in der englischen Version) nunmehr auch bei monochromer Liniendarstellung angezeigt.
  • Mehrere kleine, nicht offen sichtbare Fehler korrigiert.

7. November 2016: IniFile-KLasse „TIniFile“ mit „TMemIniFile“ ersetzt (gilt für die beiden Delphi-Programme und dort ab Compilation mit Delphi 4, darunter bleibt TIniFile gültig).

28. Oktober 2016: Option (Checkbox) „maximaler Wertebereich“ hinzugefügt.

20. Oktober 2016: Zwei kleine Fehler korrigiert.

16. Oktober 2016: Optimierte Variante des inversen Bubblesorts gemäß diesem Quellcode implementiert.

7. Oktober 2016:

  • Merge-Insertion-Sort-Variante (4-Ford-Johnson) hinzugefügt.
  • Mehrere Fehler beseitigt, der wichtigste ist, daß Splitsort nicht mehr als Block(ver)tauschmethode verfügbar ist, weil es erstens nicht bei jedem Sortieralgorithmus funktioniert und weil es zweitens auch sachlich fehlerhaft ist: Das Blöcke(ver)tauschen ist kein Sortierproblem.

13. September 2016:

  • Splaysort überarbeitet, es zeigt jetzt auch die Anzahl der Vergleiche und Verschiebungen an.
  • Red-Black-Sort (auf Basis einer Klasse für Rot-Schwarz-Bäume) hinzugefügt.

3. September 2016:

  • In die Liste „Werteerzeugung für die Startmenge“ wurde der Eintrag „n Werte, kubisch (Wurzel) verteilt“ hinzugefügt (das Prinzip gilt auch für alle höheren ungeraden Potenzen, genauer Exponenten).
  • Sortieralgorithmus „Merge-Insertion-Sort“ hinzugefügt.

30. Juni 2016: Der Radiogroup „Vorsortierung / -mischung“ wurden zwei Versionen des Fisher-Yates-Mischens hinzugefügt.

21. Juni 2016: In die Liste „Werteerzeugung für die Startmenge“ wurde der Eintrag „n Werte, kubisch (Potenz) verteilt“ hinzugefügt (das Prinzip gilt auch für alle höheren ungeraden Potenzen, genauer Exponenten). Das Interessante an dieser Verteilung ist, daß die kumulierte Verteilungsfunktion (erkenntlich an der sortierten Menge) zwar stetig, aber an einer Stelle (nämlich in der „Mitte“) nicht differenzierbar ist.

10. Juni 2016: Die Startmengen lassen sich jetzt über zwei Comboboxen „Werteerzeugung für die Startmenge“ und „Struktur der Startmenge“ übersichtlicher erzeugen - damit ist zudem eine Erhöhung der Anzahl möglicher Startmengen verbunden.

30. Mai 2016: Die Startmenge „Permutation, Quadrat“ ist jetzt auch bei ungeraden Elementeanzahlen ohne Darstellungsmangel.

19. Mai 2016:

  • Jetzt kann bei allen zufallszahlenbasierten Startmengen die Anzahl unterschiedlicher Elemente eingestellt werden.
  • Kleine Fehlerkorrekturen

15. Mai 2016: Binärmischen ist jetzt eine Option in den Vorsortieralgorithmen (auch wenn es genaugenommen kein Sortieren ist). Damit konnten zwei Einträge in der Menge der Startmengen entfernt werden.

12. Mai 2016:

  • Binärmischen, das implizit schon in zwei Startmengen angeboten wird, ist jetzt auch in den Mischungsalgorithmen der Algorithmenliste enthalten.
  • Alle binären Mischungs- und Sortieralgorithmen werden jetzt zentral in einem Unterprogramm ausgeführt.
  • Kleinere Detailkorrekturen und -verbesserungen

1. Mai 2016:

  • Die farbliche Markierung der Vergleiche (bei Slow- und Trippelsort) ist nunmehr zur Laufzeit mit Druck auf „V“ (Vergleiche, Sortierkino) bzw. „C“ (comparisons, sorting cinema) umschaltbar.
  • Weitere Rekursionsbeseitigungen und Fehlerbehebungen.

24. April 2016: Die Anzahl der voneinander verschiedenen Elemente bei einigen Startmengen ist nunmehr einstellbar. Daraufhin wurden einige wenige Startmengen entfernt, weil diese sich nunmehr „konstruieren“ lassen.

19. April 2016: Heapsort zur Liste der Vorsortieralgorithmen hinzugefügt.

12. April 2016: 13 Mischungsalgorithmen implementiert.

30. März 2016: Der Wachstumsfaktor bei Proportion Extend und Symmetry Partition Sort kann jetzt als Gleitkomma-/Realzahl und auch kleiner als 2 eingegeben werden.

21. März 2016: Stackemulatorklasse leicht überarbeitet und fehlerbereinigt

19. März 2016:

17. März 2016:

  • alle noch verbliebenen Rekursionen „entrekursiviert“, d.h., in Iterationen verwandelt, das war Voraussetzung für den nächsten Punkt,
  • maximale Stackgröße auf das zulässige Minimum reduziert,
  • das Programm müßte nunmehr mit allen Monitoren (auch mit 5K-Displays) im Vollbildmodus arbeiten,
  • kleine Überarbeitungen und Fehlerbereinigungen

6. März 2016:

  • Elementeswapping bei gleichen Indizes ist sinnlos und wird nun abgelehnt,
  • alternatives Heapsort, hier im zweiten Beitrage gefunden (der Dank geht an Daniel) und implementiert,
  • die 3 Quicksorts heißen jetzt  an- und absteigend sowie stackoptimiert, keine Unterscheidung mehr zwischen rekursivem und iterativem Quicksort (wegen des nächsten Punktes),
  • die meisten rekursiven Prozeduren in (pseudo-)iterative umstrukturiert, dabei eine eigene heapbasierte dynamische Stack-Objekt-Klasse verwendet, und die maximale Stackgröße moderat verringert (besser für die Multihtreadingsortieralgorithmen),
  • dem Shufflemerge der drei türkischen Informatiker Elif Acar, Mehmet Dalkiliiç und Görkem Tokatli (ein Eintrag unter Mergesort und in den Danksagungen) stehen nun alle Blockswappingalgorithmen zur Verfügung (wurde vorher nur durch jeweils 3 Rotationen realisiert) und
  • Quelltext(e) überarbeitet, einige kleine Fehlerkorrekturen

29. Februar 2016:

  • Mergealgorithmus nach Frank K. Hwang und Shen Lin, in und ex situ, für Merge- und Naturalmergesort (damit insgesamt vier neue Sortieralgorithmen) implementiert, er stammt aus dem unten genannten Benchmarkingtool.
  • Der Mergealgorithmus von 2007 ist jetzt rekursiv und damit „rein“.
  • Der Mergealgorithmus von 2006 instabil wurde gemäß seines stabilen Pendants etwas optimiert.
  • Der Mergealgorithmus von 2006 stabil überarbeitet.
  • einige Fehlerkorrekturen

21. Februar 2016:

  • 7 Mergingalgorithmen hinzugefügt (einer von Krysztof Dudzinki und Andrzej Dydek, einer von Jingchao Chen und fünf von Pok-Son Kim und Arne Kutzner, s. Danksagungen). Da alle mit verschiedengroßen Teilmengen umgehen können, wurde jeder einmal sowohl für Merge- als auch für Naturalmergesort implementiert, sodaß insgesamt vierzehn Sortieralgorithmen hinzugekommen sind.
  • Einen weiteren Blöcke(ver)tausch-/Arrayswap-/-rotationsalgorithmuns (Hybridrotation) hinzugefügt. Sowohl dieser als auch die zuvor genannten sieben Mergingalgorithmen entstammen Prof. Dr. Arne Kutzners Benchmarkingtool, s.  Danksagungen .
  • Die Ausgabemessagebox erscheint jetzt ungefähr an der Stelle, an der zuvor das Bedienformular stand (vorher immer in der Bildschirmmitte).
  • kleine Optimierungen

26. Januar 2016:

  • Auch bei den drei letzten Vorsortieralgorithmen (ehemals als „Halbsortierung“ bezeichnet) ist jetzt das Maß der Vorsortierung veränderbar
  • kleine Fehlerkorrekturen

24. Januar 2016:

  • Für die Auswahl der zu sortierenden Startmengen wurden weitere Startmengen auf der Basis verschiedener Verteilungen (Dreiecks-, Trapez-, Normal- und asymmetrische Verteilung, teilweise auch inversen Verteilungen) hinzugefügt.
  • Die halbsortierten Mengen wurden aus der Auswahl der zu sortierenden Startmengen entfernt. Die Halbsortierung steht jetzt - gemeinsam mit der Vorsortierung - allen Startmengen zur Verfügung.
  • Startmengen werden nun wegen ihrer Vielzahl statt in einer Radiogroup nunmehr in einer Combobox angeboten. Damit konnte das Bedienformular verkleinert und sein Layout überarbeitet werden.

19. Januar 2016:

  • Fehler in Proportion Extend und Symmetry Partition Sort behoben, der bei Eingabe des Parameters 256 und 257 zum Programmabsturz führte. Den Ausschlag gab ein Hinweis von Herrn Prof. Jinchao Chen, dem Autor beider Algorithmen.
  • Geschwindigkeitsangaben in der Combobox geringfügig überarbeitet

18. Januar 2016:

  • Implementation einer Farbmarkierung während des Vergleichens. Da diese nur bei Slow- und Trippelsort gut sichtbar ist, wurde diese auch nur dafür freigeschaltet.
  • einige marginale Detailkorrekturen und -verbesserungen

17. Januar 2016: Fehler in Quicksort beseitigt (entstand während der Implementation des Vergleichszählers)

16. Januar 2016:

  • Zähler für Vergleiche und Vertauschungen hinzugefügt, kann am Sortierende angezeigt werden,
  • als neunter Blockswapping-/Arrayrotationsalgorithmus wurde eine stabile Sortierung (Splitsort) hinzugefügt (auch wenn das Swappingproblem eigentlich kein Sortierproblem ist, s. hier), damit wird Symmetry Partition Sort beim zweiten Aufruf mit diesem Algorithmus sogar stabil, und
  • kleine Fehlerbehebungen

10. Januar 2016:

  • Minsertion- und rlx-Sort hinzugefügt,
  • die acht Blockswapping-/Arrayrotationsalgorithmen aus der Radiogroup „Blocktauschalgorithmus“ stehen neben Symmetry Parition Sort nun auch den beiden modifizierten Simpleswapsorts und dem HP-/SGI-Mergesort zur Verfügung und
  • kleine Fehlerbehebungen

Kontaktformular