QuickSort wird sehr gerne als Demonstration für die Schlichtheit von Haskell-Programmen verwendet. Die Standardvariante finde ich aber immer noch recht umständlich. |
QuickSort wird sehr gerne als Demonstration für die Schlichtheit von Programmen in der SpracheHaskell verwendet. Die Standardvariante finde ich aber immer noch recht umständlich. |
[[Überschrift]Modula-3] Hier eine nahezu 1:1-Umsetzung des C-Algorithmus, vgl. auch "Programmieren mit Modula-3. Eine Einführung in stilvolle Programmierung.", Böszörményi/Weich, Seite 298. Herauszuheben ist, dass man in der SpracheModula3 einen Abschnitt eines Feldes wieder als Feld verwenden kann. So kann man sicher sein, dass der Unteraufruf von QuickSort nur auf dem ihm zugewiesenen Feldabschnitt arbeitet. Die QuickSort-Variante in der Standardbibliothek libm3 (m3-libs/libm3/src/sort/ArraySort?.mg) ist etwas aufwändiger. [[Code] PROCEDURE QuickSort (VAR x: ARRAY OF T; ) = VAR i := FIRST(x); j := LAST(x); m: T; BEGIN IF NUMBER(x) <= 1 THEN RETURN END; m := x[(i + j) DIV 2]; REPEAT WHILE x[i] < m DO INC(i); END; WHILE x[j] > m DO DEC(j); END; IF i <= j THEN VAR swap := x[i]; BEGIN x[i] := x[j]; x[j] := swap; END; INC(i); DEC(j); END; UNTIL i > j; QuickSort(SUBARRAY(x, FIRST(x), j - FIRST(x) + 1)); QuickSort(SUBARRAY(x, i, LAST(x) - i + 1)); END QuickSort; ] |
KategorieAlgorithmus KategorieCee KategorieLisp |
KategorieAlgorithmus KategorieC KategorieCee KategorieLisp |
C |
Gemäß dem XP-Motto EinfachesDesign habe ich hier eine ganz einfach gehaltene Implementation anzubieten.
![]() |
|
qsort gemäß C-Lib (HelmutSchellong):
![]() |
|
qsort-Variante von HelmutSchellong:
![]() |
|
Siehe auch: c't 8/1984 S.70
Haskell |
QuickSort wird sehr gerne als Demonstration für die Schlichtheit von Programmen in der SpracheHaskell verwendet. Die Standardvariante finde ich aber immer noch recht umständlich.
http://www.haskell.org/aboutHaskell.html
Wie wär's mit folgender:
![]() |
|
Java |
Diese Implementation in Java wurde lediglich gemacht, um den PseudoCode auf der Seite QuickSort auszuprobieren. Für praktische Zwecke ist die Implementation deshalb nicht zu gebrauchen.
![]() |
|
Lisp |
![]() |
|
Für andere Lisp qsort/merge-sort versionen und timings siehe
http://xarch.tu-graz.ac.at/autocad/stdlib/test/SORTTST.LSP
Modula-3 |
Hier eine nahezu 1:1-Umsetzung des C-Algorithmus, vgl. auch "Programmieren mit Modula-3. Eine Einführung in stilvolle Programmierung.", Böszörményi/Weich, Seite 298. Herauszuheben ist, dass man in der SpracheModula3 einen Abschnitt eines Feldes wieder als Feld verwenden kann. So kann man sicher sein, dass der Unteraufruf von QuickSort nur auf dem ihm zugewiesenen Feldabschnitt arbeitet. Die QuickSort-Variante in der Standardbibliothek libm3 (m3-libs/libm3/src/sort/ArraySort?.mg) ist etwas aufwändiger.
![]() |
|
Python |
![]() |
|
Perl |
![]() |
|
Siehe auch: