Versionshistorie

seit Bestehen dieser Internetseite (Januar 2016, Änderungen zuvor siehe  hier):

23. April 2023: M-Sort von Ahmad (oder Ahmed) Abdelfattah (oder Abdel Fattah, Quelle siehe Danksagungen) implementiert.

8. März 2023:

  • Sechs Insertionsortvarianten (zwei Blockinsertionsorts, Fastinsertionsort, Inplaceinsertionblocksort, Inplace-RB-Insertionsort und Selectionsertionsort) von Simone Faro, Francesco Pio Marino und Stefano Scafiti (siehe  Danksagungen ) implementiert.
  • Strandsort nach diesem Quelletext (Pascal) hinzugefügt

28. Januar 2023: Ein weiteres stabiles Quicksort, diesmal von Sundararajan und Chakraborty, sowie K-Sort von Sundararajan, Pal, Chakraborty und Mahanti (siehe Danksagungen) implementiert.

14. Januar 2023: Bei den Bogosorts mit dem Permutationsenumerationsalgorithmus von Steinhaus, Johnson und Trotter die iterative mit einer rekursiven Variante ersetzt.

31. Dezember 2022:

  • Sechs Bogosorts hinzugefügt: Zwei mit Permutationsenumerationen nach C. Tomkins und L. J. Paige, nach Wendy Myrvold und Frank Ruskey, je ein von Shmuel Zaks und von Glen G. Langdon sowie zuguterletzt eines mit einfacher Rekursion.
  • Die Combobox „Algorithmus für Blocktausch / Arrayrotation“ enthält jetzt an zweiter und dritter Position zwei einfache selbstgeschriebene Rotationsalgorithmen.
  • Das Lazarusprojekt stellt nunmehr auch die Optionen „immer Fenstermodus“ und „zoombare Spalten“ zur Verfügung.

24. November 2022: Sechs Bogosorts mit den auf Vertauschungen beruhenden Permutationsenumarationsalgorithmen je von B. R. Heap, von F. M. Ives (normal und beschleunigt) sowie von Mark B. Wells und J. Boothroyd (normal, modifiziert und beschleunigt) integiert.

15. Juni 2022: Zwei weitere Mischungsalgorithmen (Reverses / Invertierungen innen und außen) implementiert.

22. Dezember 2021: n-Quicksort in zwei Varianten mit je unterschiedlichen n-Partitionierungen (unterscheiden sich jeweils nur in einem Vergleich) aufgespaltet.

18. Dezember 2021: Effizient(er)es Quicksort von Maarten Herman van Emden (Quelle unter  Danksagungen ) implementiert.

12. Dezember 2021: Vom (oder beim) n-Quicksort:

  • Code massiv überarbeitet: Etliche Korrekturen, Vereinfachungen und Optimierungen
  • Iterative Variante erstellt, diese ist nunmehr im Programm die aufgerufene (verlaufsoptisch aber nicht von ihrem rekursiven Pendant unterscheidbar)

28. November 2021:

  • Zwei Fibonacci-Sorts (siehe Flogo in den Danksagungen) implementiert. Im Original instabil, sind sie in diesem Programm über den Zugriff auf die Startposition der Sortierelemente bedingt stabil.
  • Vom Splitsort eine beschleunigte Variante hinzugefügt.
  • Option (Checkbox) „Spaltenzoom“ auf dem Bedienformular in den Abschnitt „Darstellung“ verschoben, weil sie bedienlogisch eigentlich dorthin gehört.
  • Etliche Fehler korrigiert.

8. Oktober 2021: Popular Sort von Coenraad Bron und Wim H. Hesselink (Quelle unter Danksagungen) implementiert.

23. September 2021: Nur für die beiden Delphi-Versionen:

  • Das Verarbeitungsformular kann außer bei der letzten Werteerzeugungsmethode nunmehr „manuell“ mit der Maus in seiner Größe verändert werden.
  • Die Option „Zoom“ neben der Spaltenanzahlseinstellung erlaubt nunmehr breitere Spalten - Balken statt Linien. Dafür wird der Bresenham-Algorithmus benutzt (siehe Flogo in den  Danksagungen ).

26. Mai 2021: Q-Sort von Jon Louis Bentley (Quelle unter  Danksagungen) i mplementiert.

30. April 2021: n-Quicksort mit dem Kernalgorithmus n-Partition (Verallgemeinerung der Lomuto-Partitionierung), der ein (Teil-)Array mit einer (fast) beliebigen Anzahl an Pivotelementen partitioniert, als Eigenentwicklung implementiert.

15. April 2021: Merge- und Naturalmergesort mit Wandermerge (eigenentwickelter, bedingt stabiler In-Situ-Verschmelzungsalgorithmus) implementiert.

20. Februar 2021: Friendssort nach Sardar Zafar Iqbal, Hina Gull und Abdul Wahab Muzaffar (Quelle unter  Danksagungen ) und beschleunigtes Friendssort implementiert.

12. Februar 2021: Blockquicksort mit Finish-Partitionierung nach Stefan Edelkamp und Armin Weiß (Quellen unter  Danksagungen ) sowie ein weiteres iteratives Quicksort implementiert.

10. Februar 2021:

  • Blockquicksort je mit einfachen Vertauschungen und mit zyklischen Verschiebungen nach Stefan Edelkamp und Armin Weiß (Quellen unter Danksagungen) hinzugefügt.
  • Den Bereich mit den Fraktalen bei den Startmengenstrukturen (die letzten Einträge) überarbeitet und erweitert.

4. Februar 2021:

  • Das Bose-Nelson-Sorting-Network, in diesem Projekt gefunden, implementiert (Dank an Armin Weiß unter   Danksagungen  ).
  • Bei den Strukturen der Startmenge fünf (selbstähnliche) Fraktale hinzugefügt. Ihre Feinheit ist über die maximale Rekursionstiefe einstellbar.

2. Februar 2021:

  • Die beiden Quickmergesorts, die in der vorherigen Version implementiert wurden, waren ein wenig vereinfacht. Deshalb wurden zwei weitere, komplexere Quickmergesorts (ebenfalls nichtbeschleunigt und beschleunigt), die näher an der Beschreibung und den Ideen der Autoren sind, implementiert.
  • Merge- und Naturalmergesort je mit enhanced in-place merge nach Vignesh R. und Tribikram Pradhan (Quelle unter  Danksagungen ) implementiert.

27. Januar 2021:

  • QuickMergesort nach Stefan Edelkamp und Armin Weiß (Quellen unter  Danksagungen ) hinzugefügt.
  • Beschleunigtes Quickmergesort mit einem modifizierten Scratchmerge (Original von Alexander Kronrod) implementiert.

19. Januar 2021:

8. Dezember 2020: Beim Swirlsort eine Vorwärtsvariante implementiert (die bisherige funktioniert rückwärts).

30. November 2020: Beim Dual-Pivot-Quicksort eine weitere Variante mit „inverser“ Partitionierung implementiert.

20. November 2020: Healysort, Merge2Sort und Shovesort (letzteres vorwärts und rückwärts) hinzugefügt.

6. November 2020: Das Fisher-Yates-Mischen gibt es jetzt auch in der Vorwärtsvariante (die bisherige arbeitete rückwärts) und sowohl die Vorwärts- als auch die Rückwärtsvariante nunmehr in zwei Versionen.

28. Oktober 2020:

  • IM-Sort nach Larry Liu Xinyu (auch hier) implementiert.
  • Drei Blockstauschalgorithmen der Standard Template Library nach einem Skript von Ching-Kuang Shene (Quelle siehe Danksagungen) sowie eine Eigenvariante der Variante 1 (dann mit der Nummer 4) hinzugefügt. Die Blocktauschalgorithmenauswahl erfolgt jetzt nicht mehr über eine RadioGroup, sondern über eine ComboBox.

22. Oktober 2020:

  • Blocktauschalgorithmus „Kreuzindex“ in drei Geschwindigkeitsstufen implementiert (nur in situ).
  • Das vereinfachte Verschmelzen nach Heikki Mannila und Esko Ukkonen in der Bidirektionalvariante für Merge- und Naturalmergesort auch in einer beschleunigten Version implementiert. Es nutzt eine Abwandlung der zuvor genannten schnellen Kreuzindizierung.

12. Oktober 2020:

  • Simpleswapmerge in einer weiteren, diesmal stabilen Modifikation für Merge- und Naturalmergesort implementiert.
  • Das vereinfachte Verschmelzen nach Heikki Mannila und Esko Ukkonen gab es bisher nur in einer Vorwärtsversion. Eine Rückwärtsversion und eine mit abwechselndem Verschmelzen (verschmilzt von außen nach innen) wurde hinzugefügt und ebenfalls für Merge- und Naturalmergesort bereitgestellt

26. September 2020:

  • Zwei weitere iterative Quicksorts hinzugefügt. Das Grundgerüst dazu fand ich auf Github. Das Select-Unterprogramm beider unterscheidet sich: Einmal gemäß Median of Medians, das andere Mal Quickselect.
  • Kontextsensitive Hilfe bei der oberen Auswahlbox („Werteerzeugung für die Startmenge“) hinzugefügt.

11. Juli 2020: Den Blocktauschalgorithmus aus dem Rotatequicksort der Liste (Radiogroup) der Blockswappingalgorithmen hinzugefügt.

9. Juli 2020: 3 Sortieralgorithmen implementiert:

24. Januar 2020: Binary Search Tree Sort auf der Grundlage des Quelltextes von Roman Tereshin alias ramntry (Quelle unter Danksagungen) implementiert.

19. Januar 2020:

  • Das optimierte Bubblesort gibt es nun auch in einer Vorwärtsvariante.
  • Merge- und Naturalmergesort mit 4-Band-Verschmelzen implementiert. Ersteres funktionier aber nur, wenn die Elementeanzahl eine Zweierpotenz ist.

28. Dezember 2019: 14 weitere Shellsorts mit je verschiedenen Distanzfolgen hinzugefügt.

17. Dezember 2019:

  • Beim iterativen Ex-Situ-Radixsort (LSD, least significant digit) kann jetzt eine Basis eingegeben werden.
  • Das iterative In-Situ-Radixsort (LSD, least significant digit) kann prinzipiell mit jedem internen stabilen Sortieralgorithmus kombiniert werden. Mithin wurden weitere 8 derartige Radixsorts, die intern mit Bubble- und Insertionsort (beide vor- und rückwärts), Merge-, Naturalmerge, OET- und Shakersort arbeiten, implementiert.

11. Dezember 2019: (Iteratives) In-Situ-Radixsort (LSD, least significant digit) von w0rthy (Quelle unter   Danksagungen  ) implementiert.

8. Dezember 2019: Einige Startmengenstrukturen können jetzt mit unterschiedlicher Qualität erstellt werden (die exakten Methoden sind die bisher schon implementierten).

23. November 2019: Iteratives Odd-Even-Mergesort, iteratives Pairwise Sorting Network und Dual-Pivot-Quicksort (letzteres von Wladimir Jaroslawskii), alle gefunden in diesem Javaprojekt von Piotr Grochowski (s.a.  Danksagungen ), hinzugefügt.

31. Oktober 2019:

  • Ineffizientes Selectionsort („Badsort“) implementiert.
  • Bozosort 1 und 2 zu einem Bozosort (Bozosort 1) zusammengefaßt, die Numerierung der verbleibenden drei Bozosorts entsprechend angepaßt.
  • Zufallsmischen 1.1 und 1.2 zu einem Zufallsmischen (Zufallsmischen 1) zusammengefaßt.
  • Bozosort 1 und Zufallsmischen 1 beruhen nun auf einem gemeinsamen Unterprogramm. Bei beiden kann die maximale Tauschdistanz eingestellt werden.

5. Oktober 2019:

  • Merge- und Naturalmergesort mit Weavemerge von w0rthy (Quelle unter   Danksagungen  ) implementiert.
  • Mehrere subtile Fehler entfernt.

2. Oktober 2019:

  • Die Tauschpaare, in der vorherigen Programmversion noch als neue Startmengenstruktur eingeführt, ist nunmehr in die Liste der Vorsortierungs- und -mischungsalgorithmen verlagert.
  • Optimiertes Stupidsort implementiert. Das Alleinstellungsmerkmal der einzigen Schleife des Stupidsorts geht bei dieser Optimierung allerdings verloren.

29. September 2019:

  • Bei den beiden Timsorts kann jeweils der Parameter „MinRun“ vor dem Sortieren geändert werden.
  • Weitere Startmengenstruktur („teilweise sortiert“) hinzgefügt. Die Anzahl der Tauschpaare kann dabei eingestellt werden.
  • zwei grobe Fehler (einer machte viele Startmengenstrukturen zunichte, der andere verhinderte die Stabilitätsanzeige zum Sortierende) entfernt.

21. September 2019: Noch ein weiteres Bead-/Gravitysort hinzugefügt.

15. September 2019: Ein weiteres Bead-/Gravitysort hinzugefügt.

3. September 2019:

  • iteratives Circlesort implementiert
  • Die Anzahl der Durchläufe durch die Hauptschleife kann nun bei mehr Sortieralgorithmen ermittelt und nach der Sortierung angezeigt werden.
  • Korrekturen kleiner Fehler

6. August 2019: Vom beschleunigten Naturalmergesort, das abfallende Teilmengen erkennt und invertiert, eine instabile Version implementiert.

9. Juni 2019:

  • Bei den Quicksorts als Vorsortieralgorithmen kann (neben der schon vorhandenen Schleifenanzahl) nunmehr auch die Rekursionstiefe eingestellt werden.
  • Bei jeder Veränderung des Vorsortier-/mischungsalgorithmus' wird die Anzahl der Vorsortierschleifen wieder auf 1 zurückgestellt, weil manche dieser Algorithmen bei schon eingestellten großen Schleifenanzahlen „hängen“ (und nicht abgebrochen werden) können.

9. April 2019: 4 weitere Startmengenstrukturen (je zweimal zwei verschiedengroße sortierte Teilmengen und mehrere verschiedengroße sortierte Teilmengen) implementiert

25. März 2019: 6 weitere Sortieralgorithmen implementiert:

  • 2 alternative bidirektionale Insertionsorts (eines mit Verschiebungen und eines mit Vertauschungen
  • je ein Naturalmergesort mit zufälliger Verschmelzungsreihenfolge sowie Verschmelzungsreihenfolge vorwärts und rückwärts
  • Naturalmergesort mit K-Way-Verschmelzen mit linearer Suche (Quelle unter Danksagungen bei William A. Greene)

15. März 2019: Jeder Verarbeitungsalgorithmus (Sortieren bzw. Mischen) kann mit Druck auf „P“ oder „p“ prozessorschonend unterbrochen (pausiert) und mit gleichem Drucke auch wieder fortgesetzt werden.

9. März 2019: Fünf Versionen des Fun-Sortes (Quelle unter  Danksagungen  (Autorenkollektiv)) implementiert.

11. Februar 2019: Drei mehr oder weniger vereinfachte und modifizierte Versionen des Zig-Zag-Sorts nach Michael T. Goodrich (Quelle unter Danksagungen) implementiert.

30. Januar 2019: Randomisiertes Shellsort nach Michael T. Goodrich (Quelle unter  Danksagungen ) hinzugefügt.

27. Januar 2019: Bitonisches Merge- und Naturalmergesort je mit rekursiver Verschmelzungsprozedur für beliebige Elementeanzahlen und mithin auch für unterschiedlich große Teilarrays implementiert (iterative Verschmelzungsprozedur auch für verschieden große Teilarrays und damit für (Natural-)Mergesort für beliebige Elementeanzahlen war schon implementiert).

25. Januar 2019: Annealing- und Spin-the-bottle-Sort nach Michael T. Goodrich (Quelle unter Danksagungen) sowie Quicksorts, eines mit perfekter und das andere mit meistens perfekter Halbierung, hinzugefügt

9. Januar 2019:

  • Option „Rotation“ hinzugefügt, damit kann die Startmenge nach links oder rechts verschoben werden. Dafür zwei Punkte in „Struktur der Startmenge“ entfernt („kleinstes Element hinten“ und „größtes Element vorn“), weil beides mit der neuen Option auch erzeugbar ist.
  • Mergesort nach „The Pairwise Sorting Network“ implementiert (Quelle unter  Danksagungen  bei Ian Parberry)
  • Die Verarbeitung (Sortieren oder Mischen) kann jetzt auch mit Entertastendruck (wenn ein entsprechender Algorithmus ausgewählt wurde) gestartet, das Programm im Auswahlmodus (wenn das Bedienformular erscheint) mit ESC-Tastendruck beendet werden.
  • mehrere kleine Detailkorrekturen und -verbesserungen

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