我有一个基本案例和一个递归调用,但我不知道从那里去哪里。我也需要使用模式匹配
def order(ls:List[Int]):List[Int] = ls match {
case Nil => Nil
case h::t => order(t)
答案 0 :(得分:1)
我很确定您正在寻找递归排序算法。 例如,您可以查看合并排序。这是一个简化的非通用版本
def mergeSort(ls: List[Int]): List[Int] = {
def merge(l: List[Int], r: List[Int]): List[Int] = (l, r) match {
case (Nil, _) => r
case (_, Nil) => l
case (lHead :: lTail, rHead :: rTail) =>
if (lHead < rHead) {
lHead :: merge(lTail, r)
} else {
rHead :: merge(l, rTail)
}
}
val n = ls.length / 2
if (n == 0)
ls
else {
val (a, b) = ls splitAt n
merge(mergeSort(a), mergeSort(b))
}
}
答案 1 :(得分:0)
试试这个
def order(ls:List[Int]):List[Int] = ls match {
case Nil => Nil
case h => h.sorted
}
OR
def order(ls:List[Int]):List[Int] = ls match {
case Nil => Nil
case h => h.sortWith(_ < _)
}