Beispiele / Beispiel: Quicksort

Beispiel: Quicksort

Der Sortieralgorithmus "Quicksort" ist ein gutes Beispiel für das Skripten mit JayMo.

Mit guter Lesbarkeit lässt sich der Algorithmus wie folgt schreiben:

::qsort( List l ) List
	If( l.len <= 1 )
		func = l
	p = l.first
	r = l.start( 2 )
	a = this.qsort( r.filter( each <= p ) )
	b = this.qsort( r.filter( each > p ) )
	func = a.add( p ).concat( b )

Mit Abkürzungen lässt sich dies auch kürzer schreiben:

::qsort( l )
	( l.len <= 1 )
		§ = l
	p = l[1]
	r = l.start(2)
	§ = °qsort( r.filter( $$ <= p ) ).add(p).concat( °qsort( r.filter( $$ > p ) ) )

Die kürzeste Version sieht vmtl. wie folgt aus:

::qsort(l)
	(l.len<=1).if.proc(§=l)
	§=°qsort(l.start(2).filter($$<=l[1])).add(l[1]).concat(°qsort(l.start(2).filter($$>l[1])))

Dies ist allerdings nicht mehr gut lesbar. Trotzdem ist es ein Rekord ... der Quicksort-Algorithmus lässt sich in JayMo in 3 Zeilen schreiben!!!

Zum Testen der einzelnen Funktionen kannst Du sie mit einer Beispiel-Liste aufrufen:

tl = [16, 23, 14, 7, 21, 20, 6, 1, 17, 13, 12, 9, 3, 19]
°qsort( tl.print ).print
- Powered by OghsWiki -

 

 

Unterstützen

Die Entwicklung von "JayMo" wird derzeit nur durch Eigeninitiative ermöglicht.

Erhalten:  0 €