首页 > 编程语言 > 详细

Scala 归并排序

时间:2020-12-20 23:20:29      阅读:44      评论:0      收藏:0      [点我收藏+]
//归并排序
def msort[T](less: (T, T) => Boolean) (xs: List[T]): List[T] = {
  //定义merge方法。对于两个已经有序的集合进行merge,结果也有序。
  def merge(xs: List[T], ys: List[T]): List[T] =
    (xs, ys) match {
      case (Nil, _) => ys
      case (_, Nil) => xs
      case (x :: xs1, y :: ys1) =>
        if (less(x, y)) x :: merge(xs1, ys) else y :: merge(xs, ys1)
    }

  //排序逻辑
  val n = xs.length / 2
  if (n == 0) xs
  else {
    val (ys, zs) = xs splitAt n
    //msort对ys进行排序,msort对zs进行排序,两个有序的集合进行merge,最终结果也有序。
    merge(msort(less)(ys), msort(less)(zs))
  }
}

  

Scala 归并排序

原文:https://www.cnblogs.com/noyouth/p/14165286.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!