|
本帖最后由 木林懒猫 于 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]
|
|