【发布时间】:2012-06-13 12:37:08
【问题描述】:
我有以下 erlang 代码:
lists:all(fun(Element) -> somefunction(TestCase -- [Element]) end, TestCase).
TestCase 是一个数组。我正在尝试遍历缺少一个元素的列表/数组。
问题是这段代码在最坏的情况下需要 O(N^2) 时间,因为每次调用 -- 时都会复制 TestCase 数组。在非函数式语言中有一个明确的 O(N) 解决方案。
saved = TestCase[0]
temp = 0
NewTestCase = TestCase[1:]
for a in range(length(NewTestCase)):
somefunction(NewTestCase)
temp = NewTestCase[a]
NewTestCase[a] = saved
saved = temp
...或类似的东西。
erlang 中是否有 O(N) 的解决方案?
【问题讨论】:
-
链表对这种操作效率不高。改用
sets数据结构,你会看到效率飙升。
标签: list functional-programming erlang runtime