Я не могу понять третий случай в этой функции mergeSort в Scala - PullRequest
0 голосов
/ 05 марта 2019

В случае (x::xs1, y::ys1) когда x, y ys1 & xs1 созданы?

def mergesort[T](less: (T,T) => Boolean)(xs: List[T]): List[T] = {
  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
    merge(mergesort(less)(ys), mergesort(less)(zs))
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...