Haskell ::较慢的函数作为列表变得更大

时间:2017-09-28 13:13:24

标签: list function haskell

我正在寻找列表的最大值(使用maximum),我知道这个函数需要处理整个列表才能达到目标,这显然会随着列表变大而变慢。不幸的是,我的名单很庞大(数亿)。

这是唯一的方法吗?或者有更快的方法来做到这一点?我发现Haskell很快,但此时(变慢),我想知道是否有其他选项可以找到maximum

2 个答案:

答案 0 :(得分:1)

  

我知道这个函数需要处理整个列表才能达到目标,这显然会随着列表变大而变慢。

在Haskell中找到最大值O(n)(也可能是其他所有语言)。除非你有一些具体的基准和代码,否则这似乎完全可以预料到。

答案 1 :(得分:0)

由于您需要“查看”每个值并选择最高O(n)是最佳解决方案(没有任何其他可以使用的信息)。如果您必须多次执行该功能,那么您可能希望对列表进行排序(升序或降序)并使用时间复杂度为head的函数lastO(1) ,而haskells sort是一个O(n log n)最坏情况和平均情况表现的合并。