【发布时间】:2011-07-24 03:59:21
【问题描述】:
函数max() 返回列表中的最大元素。 . .就Big O notation 而言,它的运行时间是多少(在 Python 3 中)?
【问题讨论】:
标签: python performance python-3.x big-o
函数max() 返回列表中的最大元素。 . .就Big O notation 而言,它的运行时间是多少(在 Python 3 中)?
【问题讨论】:
标签: python performance python-3.x big-o
这取决于您如何使用它。
如果你想基于函数“someFunc”进行最大化,则需要O(len(l)*k),其中 k 是函数“someFunc”运行所需的时间。
maxVal = max(l, key=somefunc)
但是对于正常情况,它应该只遍历列表并使用正常的比较函数找到最大值。
【讨论】:
这是 O(n),因为它必须检查每个元素。如果您想获得更好的最大性能,可以使用heapq 模块。但是,你必须negate each value,因为heapq 提供了一个最小堆。向堆中插入一个元素是 O(log n)。
【讨论】:
n 元素添加到O(n) 的堆中(只需以相反的顺序调用siftdown )。
当然它是 O(n),除非您使用不同的数据结构来支持值集合的最大值,因为某些实现不变量。
【讨论】: