summaryrefslogtreecommitdiff
path: root/test/benchmark/sources/sort2/sort2.scala
blob: 6c024eab7a436be45ef112969069c7a91b5d3481 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/*                     __                                               *\
**     ________ ___   / /  ___     Scala benchmark suite                **
**    / __/ __// _ | / /  / _ |    (c) 2003-2004, LAMP/EPFL             **
**  __\ \/ /__/ __ |/ /__/ __ |                                         **
** /____/\___/_/ |_/____/_/ | |                                         **
**                          |/                                          **
** $Id$
\*                                                                      */

package benchmarks;

/** Quick-sort a list of integers, version 2. Taken from the
    Scala distribution examples.  */
class Sorter {

  def sort(a: List[Int]): List[Int] = {
    if (a.length < 2)
      a
    else {
      val pivot = a(a.length / 2);
      def lePivot(x: Int) = x < pivot;
      def gtPivot(x: Int) = x > pivot;
      def eqPivot(x: Int) = x == pivot;
      sort(a filter lePivot)
        ::: sort(a filter eqPivot)
        ::: sort(a filter gtPivot)
    }
  }

}

object sort2 extends Sorter with scala.testing.Benchmark {
  def run: Unit = sort(List.range(1,10000));

}