设置转换的列表的时间复杂度是多少?

Posted

技术标签:

【中文标题】设置转换的列表的时间复杂度是多少?【英文标题】:What is time complexity of a list to set conversion? 【发布时间】:2016-04-11 01:49:58 【问题描述】:

我注意到python官网上的set操作时间复杂度表。但是我只是想问一下将列表转换为集合的时间复杂度是多少,例如,

l = [1, 2, 3, 4, 5]
s = set(l)

我知道这实际上是一个哈希表,但它究竟是如何工作的?那么是O(n)吗?

【问题讨论】:

你可以测试一下......只是时间增加n。 (我不知道,但我想应该是因为在哈希表中插入大部分时间是 O(1)。)。 谢谢 我想我只是太懒了我应该习惯使用计时器模块 时间复杂度问题应该参考算法来回答,而不是观察机器上的操作时间。 【参考方案1】:

是的。遍历一个列表是O(n),将每个元素添加到哈希集中是O(1),所以总操作是O(n)

【讨论】:

在更糟糕的情况下,当您每次都遇到哈希冲突时,在哈希表中的插入总体而言将是 O(n) 和 O(n^2),但幸运的是这几乎不会发生。跨度> 另外,如果您的内存管理或哈希分箱非常差并且列表非常大,您的性能将不会是 O(n)。

以上是关于设置转换的列表的时间复杂度是多少?的主要内容,如果未能解决你的问题,请参考以下文章

Python 中 zip() 的时间复杂度是多少?

java中HashMap.containsValue()的时间复杂度是多少?

这段代码的时间复杂度是多少(来自 leetcode)?

heapq.nlargest 的时间复杂度是多少?

ES6 将可迭代转换为数组时间复杂度

在 dictionary.values() 列表与集合中查找的时间复杂度 [重复]