在网站中动态效果怎么做小程序个人开发全过程
在网站中动态效果怎么做,小程序个人开发全过程,摄影学习网站,软件开发公司需要什么资质文章目录 优先队列相关操作堆化入堆出堆获取堆顶元素小根堆与大根堆 华为OD算法/大厂面试高频题算法练习冲刺训练 优先队列相关操作 注意#xff0c;优先队列#xff08;priority queue#xff09;也叫做堆#xff08;heap#xff09;。谈到优先队列时#xff0c;一般强调… 文章目录 优先队列相关操作堆化入堆出堆获取堆顶元素小根堆与大根堆 华为OD算法/大厂面试高频题算法练习冲刺训练 优先队列相关操作 注意优先队列priority queue也叫做堆heap。谈到优先队列时一般强调其功能或应用谈到堆时一般强调其树形结构但这两个词是可以进行同义替换的大部分时候不用做严格区分。 在python中我们使用内置库heapq来实现优先队列的相关操作。需要先导入heapq库。即
from heapq import *或者
from heapq import heapify, heappush, heappop # 导入最常用的三个API虽然优先队列的底层原理是用完全二叉树来实现的但由于完全二叉树通过层序遍历即树的BFS可以得到序列化的结果即数组故通常而言我们无需显式地构建出一棵完全二叉树来实现堆而是使用heapq内置库来对一个列表进行堆化和堆操作。
堆化
使用heapq内置库中的内置函数heapify()来实现一个列表的堆化。所谓堆化是指令一个列表按照堆排序的要求来排序的过程。
heap [1, 3, 4, 2] # 构建一个叫做heap的列表
heapify(heap) # 令heap堆化
print(heap) # 输出[1, 2, 4, 3]是heap按照堆排序后的结果从单词heapify()也可以看出这是一个动词故该函数是功能对heap列表进行原地排序没有返回值。
堆化/堆排序的时间复杂度是O(NlogN)
入堆
使用heapq内置库中的内置函数heappush(heap, element)来实现将元素element加入堆heap中。
heap [1, 3, 4, 2] # 构建一个叫做heap的列表
heapify(heap) # 令heap堆化
heappush(heap, 5) # 令元素5入堆
print(heap) # 输出[1, 2, 4, 3, 5]是5入堆后的结果
heappush(heap, 0) # 令元素0入堆
print(heap) # 输出[0, 2, 1, 3, 5, 4]是0入堆后的结果入堆操作的时间复杂度为O(logN)。heappush()函数是没有返回值的。
出堆
使用heapq内置库中的内置函数heappop(heap)来实现弹出堆heap的堆顶元素。
heap [0, 1, 2, 3, 4, 5] # 构建一个叫做heap的列表
heapify(heap) # 令heap堆化
top heappop(heap) # 弹出堆顶元素
print(top, heap) # 输出0和[1, 3, 2, 5, 4]是堆顶元素0出堆后的结果
top heappop(heap) # 弹出堆顶元素
print(top, heap) # 输出1和[2, 3, 4, 5]是堆顶元素1出堆后的结果出堆操作的时间复杂度为O(logN)。heappop()函数是有返回值的返回出堆的堆顶元素。
获取堆顶元素
堆顶元素总是位于列表heap索引为0的位置故直接使用索引操作即可获得堆顶元素。
heap [5, 4, 2, 0, 3, 1] # 构建一个叫做heap的列表
heapify(heap) # 令heap堆化
print(heap[0]) # 输出堆顶元素0小根堆与大根堆
小根堆是指较小值具有更高优先级的堆在树形结构上体现为每一个节点的值都小于其子节点的值。
大根堆是指较大值具有更高优先级的堆在树形结构上体现为每一个节点的值都大于其子节点的值。
在python的heapq库中默认的操作是构建****小根堆。
如果想要构建一个大根堆可以通过储存元素相反值的方式来构建一个伪大根堆即实际上仍然按照小根堆来操作但由于储存了相反数原先的最大值会变成绝对值最大的最小值而储存在堆顶。如
heap [0, 1, 2, 3, 4, 5] # 构建一个叫做heap的列表
heap [-num for num in heap] # 储存相反数
heapify(heap) # 令heap堆化得到一个伪大根堆
top -heappop(heap) # 弹出堆顶元素再取反可以得到原heap中的最大值
print(top, heap) # 输出5和[-4, -3, -2, 0, -1]是堆顶元素-5出堆后的结果
heappush(heap, -10) # 往堆中存入元素10应该存入其相反数-10
print(heap) # 输出[-10, -3, -4, 0, -1, -2]可以看到-10位于堆顶heap[0]的位置华为OD算法/大厂面试高频题算法练习冲刺训练 华为OD算法/大厂面试高频题算法冲刺训练目前开始常态化报名目前已服务100同学成功上岸 课程讲师为全网50w粉丝编程博主吴师兄学算法 以及小红书头部编程博主闭着眼睛学数理化 每期人数维持在20人内保证能够最大限度地满足到每一个同学的需求达到和1v1同样的学习效果 60天陪伴式学习40直播课时300动画图解视频300LeetCode经典题200华为OD真题/大厂真题还有简历修改、模拟面试、专属HR对接将为你解锁 可上全网独家的欧弟OJ系统练习华子OD、大厂真题 可查看链接 大厂真题汇总 OD真题汇总(持续更新) 绿色聊天软件戳 od1336了解更多
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/87992.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!