有人能指出我的资源列出了基本的clojure库函数的Big-O复杂性,例如conj,cons等等吗?我知道Big-O会根据输入的类型而有所不同,但是,这样的资源是否可用?我对编写某些东西感到不舒服,却没有大致了解它的运行速度。
答案 0 :(得分:16)
以下是由John Jacobsen和from this discussion组成的表格:
答案 1 :(得分:8)
这里的聚会晚了,但我发现the link in the comments of the first answer更加确定,所以我在这里重新发布一些修改(即english->big-o
):
在未排序的集合中,O(log 32 n)几乎是恒定的时间,并且因为2 32 节点可以适合位分区的trie节点,这意味着worst-case complexity of log32232 = 6.4。向量也是tries where the indices are keys。
排序集合尽可能使用二进制搜索。 (是的,这些都是技术上的O(log n);包括常数因子供参考。)
列表保证第一个元素上的操作有恒定的时间,而其他所有元素的操作保持为O(n)。