gpt4 book ai didi

python - 在 Python 中进行堆排序以寻求建议

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:20:55 24 4
gpt4 key购买 nike

我只需要检索 3 个最小的元素,想知道是否有一种方法可以改进我的以下代码以保持堆大小更小——我认为如果我们只需要将堆大小保持为 3,就足够了。但是在 heapq 中找不到要调整的选项。

换句话说,我想维护一个偶尔更新的三元素堆。

import heapq

def heapsort(iterable):
h = []
for value in iterable:
heapq.heappush(h, value)
return [heapq.heappop(h) for i in range(len(h))]

if __name__ == "__main__":

print heapsort([1, 3, 5, 7, 9, 2, 4, 6, 8, 0])

最佳答案

改进代码只获取三个最小元素的方法是将其替换为heapq.nsmallest :

print heapq.nsmallest(3, [1, 3, 5, 7, 9, 2, 4, 6, 8, 0])

输出:

[0, 1, 2]

你可以看看implementation of nsmallest如果您对如何从 heapq 原始函数构建它感到好奇,因为它们正是这样做的。

关于python - 在 Python 中进行堆排序以寻求建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34100991/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com