繁体   English   中英

有没有办法在少于 O(n) 的时间内找到集合中的最小元素?

[英]Is there a way to find minimum element in a set in less than O(n) time?

我正在尝试使用 min() 从 python 中的集合中获取最小值。

约束:

  1. 我正在使用一个将节点映射到一个值的字典,但是这个字典会不断更新。
  2. 不断减小集合的大小

我的集合有 510650 个元素。 current = min(unvisited, key=lambda node: distanceTo[node])

  1. 字典的名称是'distanceTo'。

  2. 集合的名称是“未访问”。

如果我正确理解 big-o 符号,我不相信。

“O(n) 意味着处理时间随着输入的大小线性增加”

如果您从逻辑上考虑,对于添加到未排序列表中的每个项目,您需要比较另一个元素以查看它是否满足您的特定要求(在您的情况下,具有最小值)

https://en.wikipedia.org/wiki/Time_complexity#Linear_time

维基百科 big-o 符号表

编辑:当然,如果某人只是想在列表中找到一个特定值,并且该值恰好在他开始搜索的开头,那么它会在不到 O(n) 的时间内找到; 可能不相关,但我觉得值得一提。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM