【发布时间】:2011-04-23 13:20:54
【问题描述】:
我有一个简单的问题:将对象收集到一个列表中并向后遍历该列表。看起来很简单,但这段代码是高负载计算的一部分。使用 conses 很自然,因为添加新元素和顺序访问需要 O(1)。但是,如果我需要一个有效的双向链表来轻松地双向遍历它,我该怎么办?使用(反向)?它需要 O(n) 内存和时间,所以在我的情况下实际上需要 O(n^2) (这真的很糟糕)。使用(最后)还是(附加)?同样的故事:O(n)。我真的不明白在哪里可以找到(源代码除外)有关标准库函数计算复杂性的任何信息。它依赖于实现吗?对于各种标准数据结构的实现,我必须做些什么?有没有有效使用 conses 的指南?
【问题讨论】:
-
Purely Functional Data Structures 可能是一本好书。
标签: lisp common-lisp