找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 3072|回复: 0

[求助] 关于heapq模块中的heapify和heappush两个函数

0

主题

0

帖子

0

积分

贫民

积分
0
木林懒猫 发表于 2020-7-19 18:13:11 | 显示全部楼层 |阅读模式
本帖最后由 木林懒猫 于 2020-7-19 18:16 编辑

在学习数据结构的过程中,偶然发现测试样例在分别使用heapq.heapify()和heapq.heappush()两个函数得到的堆的结果不一样
import  heapq

----------heappush方法----------------
sample = [46, 23, 26, 24, 10]heap = []
for i in range(len(sample)):
    heapq.heappush(heap, sample)

print('heappush方法', heap)
结果为  heappush方法 [10, 23, 26, 46, 24]

-----------heapify方法------------------
sample = [46, 23, 26, 24, 10]
heapq.heapify(sample)
print('heapify方法', sample)
结果   heapify方法 [10, 23, 26, 24, 46]


还发现个奇怪的现象,当我把这两段代码放在一起同时运行的时候,heappush方法的结果竟然改变了!变成和heapify一样
heapify方法 [10, 23, 26, 24, 46]
heappush方法 [10, 23, 26, 24, 46]
通过画图可以得到这个序列的正确堆应该是[10, 23, 26, 46, 24]


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表