algorithm - Scala 代码冒泡排序 for 循环

标签 algorithm scala sorting

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/

相关文章:

python - 如何指定只允许某些第一个组合的 itertools 排列?

scala - SBT 0.13.0 - 无法扩展以前版本的 Scala 编译的宏

c++ - 在结构中为前 5 个创建最高值的索引

c# - 如何实现带有备份选项的树?

algorithm - 大O还是大欧米茄?

Scala sys.env 用于未定义的环境变量

javascript - 如何使用另一个数组作为模板对数组数据进行排序?

java - java中如何同时对两个列表进行排序?

c - 在限制范围内分解数字的最佳方法

scala - Spark 中的 RDD 持久化