Montag, 22. Februar 2010

Quicksort in Scala

Ich weiß, ich weiß. Nicht schon wieder ein Quicksort. Dem ein oder anderen wird es sicher schon zur Nase rausquillen, aber generische Quicksort Algorithmen sind wirklich ein guter Weg um eine neue Sprachen kennenzulernen (zumindest empfinde ich das so ^^) Dieser hier ist mit ein wenig Hilfe zustande gekommen. Warum ist das ganze überhaupt wert gepostet zu werden? Erstmal ist Scala eine sehr interessante Sprache die den Versuch unternimmt FP und OOP zu vereinen (ohne dabei in das Kitchen-Sink Muster zu verfallen), des weiteren läuft sie auf der JVM was einem die Möglichkeit gibt auf den reichhaltigen Fundus an Java-Libs zurückzugreifen und die Vorzüge der JVM zu nutzen. Spannende Sprache für alle die mal was ganz anderes sehen wollen ;)


object Main {
def qs[T <% Ordered[T]](list: List[T]): List[T] =
list match {
case Nil => Nil
case x::xs => {
val (l, g) = xs partition (_ < x)
qs(l) ++ (x::qs(g))
}
}

def main(args: Array[String]): Unit = {
val a = List(5,3,2,1,7,8,9,4,6)
println(qs(a))
}

}

1 Kommentar:

.:: AuroraUX ::. hat gesagt…

parallel quicksort in Ada,
http://portal.acm.org/citation.cfm?id=989804

else
http://rosettacode.org/wiki/Sorting_algorithms/Quicksort#Ada