随笔分类 -  堆heapq

摘要:import heapq lst = list("AbSZDYM6BTXHU") print(lst) # ['A', 'b', 'S', 'Z', 'D', 'Y', 'M', '6', 'B', 'T', 'X', 'H', 'U'] heapq.heapify(lst) print(lst) 阅读全文
posted @ 2023-06-25 12:05 sangern 阅读(27) 评论(0) 推荐(0) 编辑
摘要:python默认的都是小根堆,实现数字的大根堆,可在堆化前把数字 乘以 -1 ,输出时 再 乘以 -1 变回原值。 比如: [5, 20, 6],堆化前用列表推导式把列表转为: [-5, -20, -6] import heapq import random data = list(range(1, 阅读全文
posted @ 2023-06-25 11:58 sangern 阅读(384) 评论(0) 推荐(0) 编辑
摘要:堆排序的核心是什么?借助堆数据结构,不断输出当前堆顶元素(小根堆),每次堆顶离开当前堆后,对剩余元素重新调整成堆,直到堆中只剩下一个元素;元素的输出序列可转换成元素的有序序列。 堆排序的步骤:1. 当一个节点被插入时,将该节点放在堆的末尾(这是为了保证堆是完全二叉树);2. 然后将该节点与它的父节点 阅读全文
posted @ 2023-06-23 23:47 sangern 阅读(74) 评论(0) 推荐(0) 编辑
摘要:堆可视化操作演示:https://visualgo.net/zh/heap 堆实际上是一棵完全二叉树,其任何一非叶节点满足性质:小根堆:Key[i]<=key[2i+1]&&Key[i]<=key[2i+2] 或者 大根堆 Key[i]>=Key[2i+1]&&key>=key[2i+2] 即任何一 阅读全文
posted @ 2023-06-22 21:52 sangern 阅读(292) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示