我正在寻找列表的最大值(使用maximum
),我知道这个函数需要处理整个列表才能达到目标,这显然会随着列表变大而变慢。不幸的是,我的名单很庞大(数亿)。
这是唯一的方法吗?或者有更快的方法来做到这一点?我发现Haskell很快,但此时(变慢),我想知道是否有其他选项可以找到maximum
。
答案 0 :(得分:1)
我知道这个函数需要处理整个列表才能达到目标,这显然会随着列表变大而变慢。
在Haskell中找到最大值O(n)
(也可能是其他所有语言)。除非你有一些具体的基准和代码,否则这似乎完全可以预料到。
答案 1 :(得分:0)
由于您需要“查看”每个值并选择最高O(n)
是最佳解决方案(没有任何其他可以使用的信息)。如果您必须多次执行该功能,那么您可能希望对列表进行排序(升序或降序)并使用时间复杂度为head
的函数last
或O(1)
,而haskells sort
是一个O(n log n)
最坏情况和平均情况表现的合并。