def quickSort[T] ( xs : List[T] ) ( p : ( T, T ) = > Boolean ) : List[T] = xs match |
{ |
case Nil = > Nil |
case _ = > |
val x = xs.head |
val ( left, right ) = xs.tail.partition ( p ( _ , x ) ) |
val left _ sorted = quickSort ( left ) ( p ) |
val right _ sorted = quickSort ( right ) ( p ) |
left _ sorted ::: ( x :: right _ sorted ) |
} |