【问题标题】:Scala MergeSort斯卡拉合并排序
【发布时间】:2020-07-03 23:03:14
【问题描述】:

我是 Scala 新手,必须实现 MergeSort。

给定的原型如下所示:def mergeSort(split : List[Int] => (List[Int], List[Int]), as: List[Int]): List[Int]

我不要求你为我实现 MergeSort,我已经知道怎么做。我的问题是我不允许更改方法定义。

不知道怎么处理split : List[Int] => (List[Int], List[Int]), as: List[Int]) 这显然意味着它将给定的列表一分为二,但是我如何访问这两个结果列表呢?

如果我尝试这样的事情: if (List.length < 2) List我得到错误:错误:值长度不是对象列表的成员

但是,我已经看到 MergeSort 的例子就是这样做的。

【问题讨论】:

    标签: scala mergesort


    【解决方案1】:

    提示:

    • if (as.length < 2) { ... }
    • val (lefts, rights) = split(as)

    【讨论】:

    • 这是否意味着,如果我想访问整个列表,我只需将其称为?
    • 你有两个参数:一个拆分函数(split)和整个列表(as)
    • 方法头中的拆分:它有什么作用?是否有两个列表参数合并为一个,或者是否有一个列表参数一分为二?
    • 所以这表示一个函数?拆分:List[Int] => (List[Int], List[Int])
    • this 表示一个函数,它接受一个列表并返回一个由两个列表组成的元组
    猜你喜欢
    • 1970-01-01
    • 2011-03-13
    • 1970-01-01
    • 2021-02-10
    • 2011-09-16
    • 2016-01-31
    • 2012-04-03
    • 2017-10-23
    • 1970-01-01
    相关资源
    最近更新 更多