Ich habe um mit Scala vor kurzem spielen und dachte darüber nach, wie eine generische Version von quicksort darin zu implementieren (nur ein besseres Gefühl für die Sprache zu bekommen)Eine generische quicksort in Scala
ich kam mit so etwas wie dies
object Main {
def qs[T](a: List[T], f: (T, T) => Boolean): List[T] = {
if (a == Nil) return a
val (l, g) = a drop 1 partition (f(a(0),(_:T)))
qs(l, f) ::: List(a(0)) ::: qs(g, f)
}
def main(args: Array[String]): Unit = {
val a = List(5,3,2,1,7,8,9,4,6)
val qsInt = qs(_: List[Int], (_: Int) > (_: Int))
println(qsInt(a))
}
}
Dies ist nicht so allgemein wie ich es wollte, da ich explizit muß angeben, wie die Elemente eher bestellen dann etwas nur tun, wie
val (l, g) = a drop 1 partition (a(0) >)
Wie kann ich dem Compiler mitteilen, dass T nur den Größer-als-Operator implementieren muss, um von dieser Funktion sortiert werden zu können?
Grüße
Vielen Dank! Große Antwort :) – raichoo
Kein Problem. Schau dir auch die qs impl auf Wikipedia an. Vielleicht findest du das besser und intuitiver als meins;) – Schildmeijer