// bubble sort demo program println("how many integers?") val N = readInt println("do you want to print the data before/after? ('y' for yes)") val input = readLine val verbose = (input == "y") val nums = Array.fill(N)(util.Random.nextInt(100)) if (verbose) { println("before:") nums.foreach(println(_)) } bubblesort(nums) if (verbose) { println("after:") nums.foreach(println(_)) } if (isSorted(nums)) { println("success!") } else { println("the programmer messed up!") } def bubblesort(nums : Array[Int]) = { for (endIndex <- nums.size -1 to 1 by -1) { for (i <- 0 until endIndex) { // compare nums(i) with nums(i+1) and exchange if needed if (nums(i) > nums(i+1)) { val tmp = nums(i) nums(i) = nums(i+1) nums(i+1) = tmp } } } } def isSorted(nums : Array[Int]) : Boolean = { var result = true for (i <- 0 until nums.size-1) { if (nums(i) > nums(i+1)) result = false } result }