如何在scala中编写一个名为Order的函数,它接受一个参数:整数列表。并从最小值到最大值返回相同的整数列表

如何在scala中编写一个名为Order的函数,它接受一个参数:整数列表。并从最小值到最大值返回相同的整数列表,scala,Scala,我有一个基本情况和一个递归调用,但我不知道从那里去哪里。我还需要使用模式匹配 def order(ls:List[Int]):List[Int] = ls match { case Nil => Nil case h::t => order(t) 试试这个 def order(ls:List[Int]):List[Int] = ls match { case Nil => Nil case h => h.sorted } OR def order(l

我有一个基本情况和一个递归调用,但我不知道从那里去哪里。我还需要使用模式匹配

def order(ls:List[Int]):List[Int] = ls match {
   case Nil => Nil
   case h::t => order(t) 
试试这个

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(_ < _)
}
def顺序(ls:List[Int]):List[Int]=ls匹配{
案例Nil=>Nil
案例h=>h
}
或
定义顺序(ls:List[Int]):List[Int]=ls匹配{
案例Nil=>Nil
案例h=>h.sortWith(
我很确定您正在寻找递归排序算法。 例如,您可以查看合并排序。这是一个简化的非通用版本

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))
  }
}
def mergeSort(ls:List[Int]):List[Int]={
def merge(l:List[Int],r:List[Int]):List[Int]=(l,r)匹配{
案例(无,41;)=>r
案例(无)=>l
案例(lHead::lTail,rHead::rTail)=>
如果(左前<右后){
lHead::merge(lTail,r)
}否则{
rHead::合并(l,rTail)
}
}
val n=最小长度/2
如果(n==0)
ls
否则{
val(a,b)=n处的ls拆分
合并(合并排序(a),合并排序(b))
}
}

我假设他们希望您实现类似快速排序的解决方案,但没有适当的排序(分区)。但是在这里给你答案会有点违背练习的目的。我能得到一些帮助吗。我已经想到了所有不在列表中使用枢轴(头部)进行分区的东西,将排序后的左侧与排序的右侧与中间的枢轴合并。