相关疑难解决方法(0)

懒惰的评估和时间复杂性

我正在寻找stackoverflow Non-Trivial Lazy Evaluation,这让我想到了Keegan McAllister的演讲:为什么要学习Haskell.在幻灯片8中,他显示了最小功能,定义为:

minimum = head . sort
Run Code Online (Sandbox Code Playgroud)

并指出其复杂性为O(n).我不明白为什么如果通过替换排序是O(nlog n),复杂性被认为是线性的.帖子中引用的排序不能是线性的,因为它不假设数据的任何内容,因为线性排序方法需要它,例如计数排序.

懒惰的评价在这里发挥着神秘的作用吗?如果是这样,背后的解释是什么?

sorting algorithm haskell lazy-evaluation time-complexity

69
推荐指数
7
解决办法
4067
查看次数

将项目列表拆分为两个奇数和偶数索引项目列表

我想提出一个接受列表并返回两个列表的功能:第一个是包含每个奇数项和第二个包含每个偶数项.

例如,给定[1;2;4;6;7;9],我想回来[ [1;4;7] ; [2;6;9] ].

到目前为止我写过这篇文章,我不知道如何进步.

let splitList list =
    let rec splitOdd oList list1 list2 =
        match oList with
        | [] -> []
        | head :: tail -> splitEven tail (list1::head) list2
    and splitEven oList list1 list2 =
        match oList with
        | [] -> []
        | head :: tail -> splitOdd tail list1 (list2::head)
    splitOdd list [] []
Run Code Online (Sandbox Code Playgroud)

f# ocaml functional-programming tail-recursion list

16
推荐指数
3
解决办法
5410
查看次数