当前位置: 首页 > news >正文

网站建设通路快速做网站的技术

网站建设通路,快速做网站的技术,经营网站备案信息,网页设计指什么Python中heapq库的基础使用方法和示例代码,包含详细注释说明: 1. 基本功能 heapq 实现的是最小堆(父节点值 ≤ 子节点值),核心操作包括: 插入元素:heappush(heap, item)弹出最小值&#xff1a…

Python中heapq库的基础使用方法和示例代码,包含详细注释说明:


1. 基本功能

heapq 实现的是最小堆(父节点值 ≤ 子节点值),核心操作包括:

  • 插入元素heappush(heap, item)
  • 弹出最小值heappop(heap)
  • 堆化列表heapify(list)(将无序列表转换为堆)
  • 查看最小值heap[0]

2. 基础示例代码

import heapq# 创建一个空堆
heap = []# 插入元素
heapq.heappush(heap, 3)
heapq.heappush(heap, 1)
heapq.heappush(heap, 4)print("当前堆:", heap)  # 输出: [1, 3, 4](实际存储为堆结构)# 弹出最小值
min_val = heapq.heappop(heap)
print("弹出的最小值:", min_val)  # 输出: 1
print("剩余堆:", heap)  # 输出: [3, 4]# 堆化现有列表
existing_list = [5, 2, 7, 1]
heapq.heapify(existing_list)
print("堆化后的列表:", existing_list)  # 输出: [1, 2, 7, 5]

3. 进阶用法

3.1 合并堆
heap1 = [1, 3, 5]
heap2 = [2, 4, 6]
merged_heap = heapq.merge(heap1, heap2)
print("合并后的堆(迭代器):", list(merged_heap))  # 输出: [1, 2, 3, 4, 5, 6]
3.2 处理复杂元素

当元素是元组时,默认按第一个元素排序。可通过tuple调整优先级:

# 按元组第二个元素排序(需预处理)
tasks = [(3, "任务A"), (1, "任务B"), (2, "任务C")]
heapq.heapify(tasks)
print("按优先级排序的任务:", tasks)  # 输出: [(1, '任务B'), (3, '任务A'), (2, '任务C')]# 提取所有元素(从小到大)
while tasks:print(heapq.heappop(tasks))
# 输出:
# (1, '任务B')
# (2, '任务C')
# (3, '任务A')
3.3 限制堆大小

保留堆中最大的N个元素(或最小的N个元素):

# 保留最小的3个元素
nums = [4, 1, 7, 3, 8, 5]
heapq.heapify(nums)
heapq.nlargest(3, nums)  # 直接返回前3大元素(无需修改堆)
# 或者使用堆维护:
smallest_3 = []
for num in nums:heapq.heappush(smallest_3, num)if len(smallest_3) > 3:heapq.heappop(smallest_3)
print("最小的3个元素:", smallest_3)  # 输出: [1, 3, 4]

4. 注意事项

  1. 堆的索引:堆的根节点在索引0,子节点在2*i+12*i+2
  2. 时间复杂度
    • 插入/弹出:O(log n)
    • 堆化列表:O(n)
  3. 直接操作堆:避免手动修改堆列表,需通过heapq函数维护堆性质。

5. 应用场景

  • 优先队列:如任务调度系统。
  • Top K 问题:快速找到前K大/小的元素。
  • 图算法:如Dijkstra算法中的优先队列。
  • 流数据处理:实时维护最大/最小值的集合。

如果需要最大堆,可以将元素取负数后存入最小堆,使用时再转换回来。

http://www.dtcms.com/a/448825.html

相关文章:

  • 来宾网站优化网站规划怎么做
  • 宾爵手表官方网站wordpress二级菜单排列
  • 如何看网站排名以下哪些是付费推广方式
  • 沈阳seo网站管理怎么做用户调研网站
  • 网站一级目录多站点网站群的建设与管理
  • 网站公司网站建设卖鞋做哪个网站好
  • 网站服务器可以做家用电脑搜索引擎网站分析
  • 网站备案期间做网页windows server 2008 网站配置
  • 南平 建网站免费注册网页的网站
  • 建站教程流程图百度搜索引擎链接
  • 网站logo制作教程网站地图制作视频教程
  • 网站建设有什么意义有个网站可以学做ppt模板
  • hyip网站开发wordpress主题汉化语言包
  • 网站建设行业发展状况手机wap文字游戏枭雄
  • 深圳品牌网站设计专家桂林生活网新闻
  • 如何在阿里云上建设网站微信推广工具
  • 安全联盟这种网站建设慈溪白云小学班级网站建设
  • 哈尔滨免费做网站网站无域名注册人id
  • 姚孟信通网站开发中心制作公众号流程
  • 快速网站推广做吉祥物设计看什么网站
  • 提供网站空间服务器网络营销推广方法范文
  • 桐梓网站建设北京百度总部电话
  • 凡客网站建设支付宝网站开发流程
  • 包头焦点网站建设腾讯云网站搭建
  • 河南金城建设工程有限公司网站建行网站首页登录
  • 做网站 花园路国贸vps装网站管理系统
  • 广州做网络服装的网站建设网站策划书的撰写流程
  • 织梦做的网站好优化品牌设计工作室
  • 做怎么网站推广专做视频和ppt的网站
  • 空间设计师网站手机版百度入口