Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package examples
- /** Quick sort, imperative style */
- object sort {
- /** Nested methods can use and even update everything
- * visible in their scope (including local variables or
- * arguments of enclosing methods).
- */
- def sort(a: Array[Int]) {
- def swap(i: Int, j: Int) {
- val t = a(i); a(i) = a(j); a(j) = t
- }
- def sort1(l: Int, r: Int) {
- val pivot = a((l + r) / 2)
- var i = l
- var j = r
- while (i <= j) {
- while (a(i) < pivot) i += 1
- while (a(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)
- }
- if (a.length > 0)
- sort1(0, a.length - 1)
- }
- def println(ar: Array[Int]) {
- def print1 = {
- def iter(i: Int): String =
- ar(i) + (if (i < ar.length-1) "," + iter(i+1) else "")
- if (ar.length == 0) "" else iter(0)
- }
- Console.println("[" + print1 + "]")
- }
- def main(args: Array[String]) {
- val ar = Array(6, 2, 8, 5, 1)
- println(ar)
- sort(ar)
- println(ar)
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement