Gnomesort

Gnomesort ist ein sehr einfacher und stabiler Sortieralgorithmus.
Prinzip
Man stelle sich einen Gartenzwerg (garden gnome) vor, welcher vor n Blumentöpfen steht, die unterschiedliche Größen haben dürfen. Die Blumentöpfe sind in einer von links nach rechts verlaufenden Reihe aufgestellt. Ganz links steht der Gartenzwerg und möchte die Blumentöpfe von links nach rechts der Größe nach aufsteigend sortieren.
Dazu vergleicht er die beiden Blumentöpfe, vor denen er gerade steht. Stellt er fest, dass sie in der richtigen Reihenfolge sind, so macht er einen Schritt nach rechts. Stellt er hingegen fest, dass die Reihenfolge nicht stimmt, so vertauscht er die beiden Blumentöpfe und macht einen Schritt nach links. Falls er nicht weiter nach links gehen kann (wenn beispielsweise der erste Vergleich zum Ergebnis führte, dass sich der erste und zweite Blumentopf in der falschen Reihenfolge befanden), macht er einen Schritt nach rechts. Dies wiederholt er ständig. Fertig ist er, wenn er am ganz rechts stehenden Blumentopf ankommt. Da sich rechts daneben kein weiterer Blumentopf mehr befindet, kann kein Vergleich mehr stattfinden.
Gnomesort wurde im Jahr 2000 zuerst als „Stupid Sort“ beschrieben von Hamid Sarbazi-Azad und später von Dick Grune als Gnomesort bezeichnet.[1]
Vergleich
- Gnomesort führt dieselben Vertauschungsoperationen wie Insertionsort durch, vergleicht aber einige Elemente mehrmals.
- Genauer gesagt ist der Unterschied, dass Insertionsort dahingehend optimiert ist, dass es den letzten oberen Listenindex speichert (meist versteckt in Form einer For-Schleife) und nach dem erfolgreichen Runterbubblen somit direkt dort fortsetzen kann; Gnomesort hingegen führt eine Reihe erneuter (eigentlich unnötiger) Vergleiche durch um zum letzten oberen Index zurückzukommen.
- Zudem führt Insertionsort statt Vertauschungen eigentlich nur kostengünstigere Verschiebungen aus.
- Diese beiden fehlenden Optimierungen machen Gnomesort aber zu einem der am einfachsten zu programmierenden Sortieralgorithmen und sind damit gerade seine besondere Stärke, wenn es nicht auf Laufzeit ankommt.
- Im Vergleich zu Bubblesort steigen die Blasen oft nur langsam auf, dafür aber immer n * Position im Array Mal schneller ab.
- Im Best- und Worst-Case ist Gnomesort immer genauso schnell wie Bubblesort und ansonsten immer schneller.
Laufzeitanalyse
Der Algorithmus besitzt eine quadratische und daher im Vergleich zu vielen anderen Sortieralgorithmen schlechte Worst-Case-Laufzeit. In der Informatik drückt man dies mittels Landau-Symbol durch aus. Im Best-Case hat dieser Algorithmus eine Laufzeit von . Da der Algorithmus ein In-place-Verfahren ist, braucht er vernachlässigbaren konstanten zusätzlichen Speicher.
Literatur
- Hamid Sarbazi-Azad: Stupid Sort: A new sorting algorithm. In: Department of Computing Science Newsletter, University of Glasgow. Band 599, Nr. 4, 2. Oktober 2000.
Weblinks
Einzelnachweise
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.