下面是一个用 Scala 编写的选择排序的实现。
ss.sort(arr) 行导致此错误:类型不匹配;找到:需要数组 [字符串]:数组 [Ordered[Any]]
由于 Ordered 类型是由 StringOps 继承的,不应该推断出这种类型吗?如何将字符串数组添加到 sort() 方法?
这是完整的代码:
object SelectionSortTest {
def main(args: Array[String]){
val arr = Array("Hello","World")
val ss = new SelectionSort()
ss.sort(arr)
}
}
class SelectionSort {
def sort(a : Array[Ordered[Any]]) = {
var N = a.length
for (i <- 0 until N) {
var min = i
for(j <- i + 1 until N){
if( less(a(j) , a(min))){
min = j
}
exchange(a , i , min)
}
}
}
def less(v : Ordered[Any] , w : Ordered[Any]) = {
v.compareTo(w) < 0
}
def exchange(a : Array[Ordered[Any]] , i : Integer , j : Integer) = {
var swap : Ordered[Any] = a(i)
a(i) = a(j)
a(j) = swap
}
}