【发布时间】:2019-03-11 21:12:17
【问题描述】:
gethash 函数的时间复杂度是多少?
例如,在 C++ 中,map 的搜索采用 O(log(n)),而 unordered_map 则采用 O(1)。这两件事都写在描述中,但我在 Lisp 中找不到gethash 的任何此类参考。
实际上,这扩展到所有标准库函数。我在哪里可以找到它们的复杂性,或者我可以吗?谈论 sbcl,如果这很重要的话。
【问题讨论】:
-
在程序员可以使用“容器”、“地图”、“集合”等高级“抽象”数据类型的语言中,必须在语言规范中回答此类问题。在 Common Lisp 中,只有具有具体表示的具体数据结构:列表、数组和哈希表是如何实现的众所周知,任何关于数据结构的好书都讨论了它们的复杂性。例如,对于哈希表,您可以看到this SO question。
-
好吧,我特别问这个问题,因为正如我在问题中提到的,哈希表可以是有序的或无序的,而且这两者的时间复杂度不同。
-
哈希表,顾名思义,是基于哈希函数的,所以没有排序。
标签: algorithm lisp common-lisp hashtable