From 10bf8b31e54a0f92715e817a2bf6f96fe734fa3a Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Mon, 14 May 2012 00:35:39 -0400 Subject: [PATCH] Switching to function quick sort version --- .../byx/src/main/scala/sort.scala | 27 ++++++------------- 1 file changed, 8 insertions(+), 19 deletions(-) diff --git a/scala/official-by-example/byx/src/main/scala/sort.scala b/scala/official-by-example/byx/src/main/scala/sort.scala index 2ce98cc..a33daa0 100644 --- a/scala/official-by-example/byx/src/main/scala/sort.scala +++ b/scala/official-by-example/byx/src/main/scala/sort.scala @@ -1,23 +1,12 @@ object sort { - def sort(xs: Array[Int]) { - def swap(i: Int, j: Int) { - val t = xs(i); xs(i) = xs(j); xs(j) = t + def sort(xs: Array[Int]): Array[Int] = { + if (xs.length <= 1) xs + else { + val pivot = xs(xs.length / 2) + Array.concat( + sort(xs filter (pivot >)), + xs filter (pivot ==), + sort(xs filter (pivot <))) } - def sort1(l: Int, r: Int) { - val pivot = xs((l + r) / 2) - var i = l; var j = r - while (i <= j) { - while (xs(i) < pivot) i += 1 - while (xs(j) > pivot) j -= 1 - if (i <= j) { - swap(i, j) - i += 1 - j -= 1 - } - } - if (l < j) sort1(l, j) - if (j < r) sort1(i, r) - } - sort1(0, xs.length - 1) } }