python - 集合上最小、最大的时间复杂度

标签 python

min, max 的时间复杂度为 O(N),因为它们必须遍历给定的列表/字符串并检查每个索引以找到最小值/最大值。但我想知道如果在集合上使用 min,max 的时间复杂度是多少?例如:

s = {1,2,3,4} # s is a set

使用最小值/最大值我们得到:

min(s) = 1
max(s) = 4

由于集合不像列表和字符串那样使用索引,而是使用可以直接访问的桶进行操作,那么最小/最大的时间复杂度是否与一般情况不同?

谢谢!

最佳答案

正如上面的评论所指出的,python 是一种文档完善的语言,必须始终首先引用文档。

回答问题,根据docs ,

A set object is an unordered collection of distinct hashable objects.

无序意味着使用任何方法(内置或非内置)评估所有元素中的最大值或最小值至少需要查看每个元素,这意味着最多 O(n) 复杂度。

最重要的是,python 的 max 和 min 函数遍历每个元素,并且在所有情况下都是 O(n)。 您可以随时查找 source code自己。

关于python - 集合上最小、最大的时间复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49217121/

相关文章:

python - 在 Django 模板中显示抓取的结果

python - pypyodbc 无法使用 SQL Server Localdb 引用列名

Python 不会使用 for 循环从字典中正确提取值

python - Selenium 下拉菜单

python - 根据每个嵌套列表的总和对列表列表进行排序

python - 如何使用 TriggerDagRunOperator 触发 Airflow -dag

python - Pygame 运行速度超慢(~2 fps)

Python-如何使用不带引号的 csv.writer

在 mayavi 场景窗口关闭之前,Python 脚本不会继续

python - 如何跳出 python 中的嵌套循环?