2013-06-11 81 views
5

任何人都可以指向一個資源,列出基本clojure庫函數的Big-O複雜性,如連詞,反例等。我知道Big-O會根據輸入的類型而變化,但是仍然有這樣的資源可用嗎?編寫代碼時感到不舒服,沒有大概意識到它運行得有多快。clojure庫函數的大O

回答

15

這裏是一個由John Jacobsen組成,並採取from this discussion表:

enter image description here

+4

引號中的「1」表示接近一個無關緊要(根據Rich Hickey的說法)。但真的是O(log_32深度)? –

+0

該表格不完全正確。 'last'總是O(n)。 'cons'總是O(1)(假設'seq'總是O(1))。矢量中的「conj」只是「1」,而不是1. – kotarak

+0

@kotarak你能稍微詳述一下你的更正嗎? :) – Anonymous

7

晚在這裏聚會,但我發現the link in the comments of the first answer更加明確,所以我有一些修改,重新張貼在這裏它(即,english->big-o):

enter image description here
Table Markdown source

在未排序的集合上,O(日誌 n)幾乎是恆定的時間,並且因爲節點可以適合位分區的trie節點,這意味着worst-case complexity of log32232 = 6.4。載體也是tries where the indices are keys

排序後的集合在可能的情況下使用二分搜索。 (是的,這些在技術上都是O(log n);包括常數因子僅供參考。)

列表保證第一個元素的操作的常量時間和其他所有操作的O(n)。