object BubbleSort {
def main(args : Array[String]) : Unit = {
bubbleSort(Array(50,33,62,21,100)) foreach println
}
def bubbleSort(a:Array[Int]):Array[Int]={
for(i<- 1 to a.length-1){
for(j <- (i-1) to 0 by -1){
if(a(j)>a(j+1)){
val temp=a(j+1)
a(j+1)=a(j)
a(j)=temp
}
}
}
a
}
}
我有上面的代码,据说在 Scala 中实现了冒泡排序。它主要对给定的数字进行排序,但它是一个实现良好的冒泡排序算法吗? 这行代码在伪代码中的含义是什么:for(j <- (i-1) to 0 by -1){
我听不懂。
谢谢你的帮助
最佳答案
弄清楚一段 Scala 代码的作用的最好方法是在 REPL 中运行它:
scala> 5 to 0 by -1
res0: scala.collection.immutable.Range = Range(5, 4, 3, 2, 1, 0)
因此代码从 (i-1)
到 0,向后计数。
更一般地说,x to y
创建一个从整数 x
到整数 y
的范围。 by
部分修改此计数。例如,0 to 6 by 2
表示“从 0 到 6 以 2 计数”,或 Range(0, 2, 4, 6)
。在我们的例子中,by -1
表示我们应该向后计数 1。
至于了解冒泡排序的工作原理,您应该阅读维基百科 article并使用它来帮助您了解代码的作用。
关于algorithm - Scala 代码冒泡排序 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14226252/