scala函数式编程冒泡排序
时间: 2023-07-27 10:07:41 浏览: 119
下面是使用 Scala 函数式编程实现冒泡排序的代码:
```scala
def bubbleSort(arr: Array[Int]): Array[Int] = {
val n = arr.length
def bubblePass(a: Array[Int], i: Int): Array[Int] = {
if (i < n - 1) {
if (a(i) > a(i + 1)) {
val temp = a(i)
a(i) = a(i + 1)
a(i + 1) = temp
}
bubblePass(a, i + 1)
} else a
}
def bubbleIter(a: Array[Int], j: Int): Array[Int] = {
if (j < n) bubbleIter(bubblePass(a, 0), j + 1)
else a
}
bubbleIter(arr, 0)
}
```
这个实现方式使用了递归和不可变变量,符合函数式编程的思想。其中,`bubblePass` 函数是对数组进行一次冒泡操作,`bubbleIter` 函数则是对整个数组进行多次冒泡操作,直到数组有序为止。
相关问题
scala函数式编程冒泡
下面是使用 Scala 函数式编程实现冒泡排序的代码:
```scala
def bubbleSort(arr: Array[Int]): Array[Int] = {
val n = arr.length
def bubblePass(a: Array[Int], i: Int): Array[Int] = {
if (i < n - 1) {
if (a(i) > a(i + 1)) {
val temp = a(i)
a(i) = a(i + 1)
a(i + 1) = temp
}
bubblePass(a, i + 1)
} else a
}
def bubbleIter(a: Array[Int], j: Int): Array[Int] = {
if (j < n) bubbleIter(bubblePass(a, 0), j + 1)
else a
}
bubbleIter(arr, 0)
}
```
这个实现方式使用了递归和不可变变量,符合函数式编程的思想。其中,`bubblePass` 函数是对数组进行一次冒泡操作,`bubbleIter` 函数则是对整个数组进行多次冒泡操作,直到数组有序为止。
使用scala语言,并用冒泡排序法 将6,-2,5,9,3,8,3,7,7,2由小到大进行排序
Scala是一种支持函数式编程的现代编程语言,它结合了面向对象和过程编程的优点。对于冒泡排序算法,这是一种简单的比较排序算法,通过不断交换相邻元素如果它们的顺序错误,直到整个序列都是有序的。
以下是使用Scala编写冒泡排序算法对给定整数列表从小到大排序的例子:
```scala
def bubbleSort(numbers: List[Int]): List[Int] = {
def swap(i: Int, j: Int): List[Int] = {
val temp = numbers(i)
numbers.updated(i, numbers(j))
numbers.updated(j, temp)
}
for (i <- 0 until numbers.length - 1) {
for (j <- 0 until numbers.length - i - 1) {
if (numbers(j) > numbers(j + 1)) {
swap(j, j + 1)
}
}
}
numbers
}
val numbersList = List(6, -2, 5, 9, 3, 8, 3, 7, 7, 2)
println("Sorted list: " + bubbleSort(numbersList))
阅读全文