【发布时间】:2014-08-31 05:47:58
【问题描述】:
我对 python 比较陌生(使用 v3.x 语法),希望了解有关 heapq 与 sorted 的复杂性和性能的说明。
我已经为贪婪的“找到最佳工作计划”算法实现了一个基于 heapq 的解决方案。但后来我了解了将“排序”与 operator.itemgetter() 和 reverse=True 一起使用的可能性。
遗憾的是,我找不到任何关于“排序”与 heapq 的预期复杂性和/或性能的解释。
【问题讨论】:
-
尚不清楚您到底想做什么。如果您正在寻找列表中最大的东西,
max(L)将比创建堆更快,并且比调用sorted快得多。 -
@DanRoche,如果这是一个愚蠢的问题,我们深表歉意,但是有没有办法从具有 max(L) 的集合中删除/弹出?
-
如果
L是一个列表,您可以通过L.remove(max(L))删除最大的元素。这有点浪费,因为它只需要一次就进行两次,但它仍然应该比构建堆更快。
标签: python performance sorting heap complexity-theory