nsf*_*n55 5 sorting functional-programming scala
我正在使用scala实现一些常见的算法.在尝试重新创建冒泡排序时,我遇到了这个问题
这是一个内部循环的实现,它将值冒泡到顶部:
def pass(xs:List[Int]):List[Int] = xs match {
case Nil => Nil
case x::Nil => x::Nil
case l::r::xs if(l>r) => r::pass(l::xs)
case l::r::xs => l::pass(r::xs)
}
Run Code Online (Sandbox Code Playgroud)
我的问题是案例Nil => Nil
.我明白我需要这是因为我可以申请Nil
这个功能.有没有办法确保Nil
不能以满足编译器的方式提供参数,以便我可以消除这种情况?
List 有两种子类型:Nil 和 ::,因此 :: 表示至少有一个元素的列表。
def pass(xs: ::[Int]):List[Int] = xs match {
case x::Nil => x::Nil
case l::r::xs if(l>r) => r::pass(new ::(l,xs))
case l::r::xs => l::pass(new ::(r, xs))
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
222 次 |
最近记录: |