头歌Scala函数排序
时间: 2023-04-01 12:00:56 浏览: 171
可以使用Scala中的sort函数进行排序,例如:
val list = List(3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5)
val sortedList = list.sortWith(_ < _)
println(sortedList)
输出结果为:List(1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9)
这里使用了sortWith函数,它接受一个比较函数作为参数,用于指定排序规则。在上面的例子中,我们使用了_ < _作为比较函数,表示按照升序排序。如果要按照降序排序,可以使用_ > _作为比较函数。
相关问题
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` 函数则是对整个数组进行多次冒泡操作,直到数组有序为止。
scalaArray排序
在Scala中,可以使用`sorted`方法对数组进行排序。该方法返回一个新的已排序数组,原始数组不受影响。
示例代码:
```scala
val arr = Array(5, 2, 8, 1, 9)
val sortedArr = arr.sorted
println(sortedArr.mkString(", ")) // 输出:1, 2, 5, 8, 9
```
如果需要对数组进行降序排序,可以使用`reverse`方法:
```scala
val arr = Array(5, 2, 8, 1, 9)
val sortedArr = arr.sorted.reverse
println(sortedArr.mkString(", ")) // 输出:9, 8, 5, 2, 1
```
如果需要自定义排序规则,可以使用`sortBy`或`sortWith`方法。`sortBy`方法需要传入一个函数,该函数接受数组元素并返回一个可以比较的值,例如:
```scala
val arr = Array("apple", "banana", "pear", "orange")
val sortedArr = arr.sortBy(_.length)
println(sortedArr.mkString(", ")) // 输出:pear, apple, banana, orange
```
上面代码中,根据字符串长度排序。
`sortWith`方法需要传入一个比较函数,该函数接受两个数组元素并返回一个布尔值,表示它们的顺序。例如:
```scala
val arr = Array("apple", "banana", "pear", "orange")
val sortedArr = arr.sortWith(_.charAt(0) < _.charAt(0))
println(sortedArr.mkString(", ")) // 输出:apple, banana, orange, pear
```
上面代码中,按照第一个字母的字母顺序排序。