How do I sort an array in Scala?

I can see there's a sorting object, Sorting, with a quicksort method, quickSort, on it.

What would be a code example of using it, sorting an array of object of arbitrary type? It looks like I need to pass in an implementation of the Orderable trait, but I am unsure of the syntax.

Also, I would prefer answers doing this the 'Scala way'. I know I can just use a Java library.


With Scala 2.8 or later it is possible to do:

List(3,7,5,2).sortWith(_ < _)

that uses java.util.Arrays.sort, an implementation of quicksort.


Nowadays this one works too:

List(3,7,5,2).sorted


Sorting.quickSort declares functions for taking an Array of numbers or Strings, but I'm assuming you mean you want to sort a list of objects of your own classes?

The function I think you're looking at is

quickSort [K](a : Array[K])(implicit view$1 : (K) => Ordered[K]) : Unit

Which, if I'm reading this right, means that the objects in the Array must have the Ordered trait. So your class must extend Ordered (or must mix it in), and therefore must implement the compare method of that trait.

So to rip off an example from the book:

class MyClass(n: Int) extends Ordered[MyClass] {
   ...
  def compare(that: MyClass) =
    this.n - that.n
}

So given an Array[MyClass], then Sorting.quickSort should work.