【发布时间】:2014-03-17 12:04:37
【问题描述】:
我正在学习python,如何知道命令或方法是否为'in place algorithm'?
尝试“大”输入并使用命令检查运行时是否足够好?
例如,假设我有一个包含 100,000 个元素的列表 lst。
我检查了以下两个命令,并且都“完成”了一会儿:lst = lst[ : :-1] 和 lst.reverse()。那么这是否意味着两者都已到位?
【问题讨论】:
-
你说的是他们的底层实现吗?
-
@devnull 我不明白这个问题。
-
你打算如何区分 O(1) 额外空间和 O(A^(-1)(n)) 其中
A^(-1)是阿克曼函数的反函数? A^(-1)(n) 最多为 4,您可以测试 any 输入,因此在实际测试中它无论如何都等于 O(1) 但它是 not 就地考虑。 -
@Bakuriu 鉴于我听到人们对 union find 数据结构的看法,大多数人会将
O(A^(-1)n)空间视为有效的常量空间(有充分理由),而不是因为将其称为就地空间而争论不休算法。 -
@delnan 人们还说快速排序在占用 O(log(n)) 空间时就位。我的观点是,如果我们使用严格的就地定义,则根本不可能通过实验准确确定这种算法的给定实现是否有效地占用了恒定空间。
标签: python algorithm list python-3.x