Python 中 min
和 max
函数的大 O 是什么?它们是 O(n)
还是 Python 有更好的方法来查找数组的最小值和最大值?如果它们是 O(n)
,那么使用 for 循环来查找所需的值不是更好,还是它们的工作方式与 for 循环相同?
原文由 ᴀʀᴍᴀɴ 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答5.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答975 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
它是
O(n)
。这是一种通用算法,如果不检查所有算法,一般情况下无法找到最大/最小值。 Python 甚至没有内置的排序集合类型可以使检查易于专门化。for
循环将具有相同的算法复杂性,但在典型情况下运行速度较慢,因为min
/max
(在 CPython 上运行等效)在 C 层循环,避免字节码解释器开销,for
循环会产生。