博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
普林斯顿算法part1--堆--笔记 2018年4月20到4月27
阅读量:5738 次
发布时间:2019-06-18

本文共 449 字,大约阅读时间需要 1 分钟。

这周学习了优先队列,最重要的操作是删除最大元素和插入元素。类包括创建优先队列的构造函数、向优先队列中插入一个元素、返回最大元素、删除最大元素、判断队列是否为空、返回优先队列中的元素个数。当二叉树的每个结点都大于等于它的两个子结点时为堆有序,那么根结点是堆有序的二叉树中的最大结点。使用二叉堆就可以用数组代替指针。

 

实现: 无序数组:用选择排序内循环删除最大元素,但使其有序会使后续删除更高效,但有序后,插入所需要的时间在最坏情况下为N。有序数组:类似栈的pop()操作。

 

关于堆的算法:如果堆的有序状态因为某个结点变得比它的父节点更大而被打破,那么就交换它和它的父节点,类推。如果堆的有序状态因为某个结点变得比它的两个子结点的一个或全部更小,就将它和它子结点中的较大的结点交换。如果要插入新的元素,可以插入到根结点后向下沉,。如果要删除根结点,就用最后一个元素代替根结点的位置,然后下沉

转载于:https://www.cnblogs.com/miaoqianling/p/8970804.html

你可能感兴趣的文章
python读excel写入mysql小工具
查看>>
如何学习区块链
查看>>
搜索问题的办法
查看>>
微信分销系统商城营销5大重点
查看>>
求职准备 - 收藏集 - 掘金
查看>>
htm5新特性(转)
查看>>
Linux-Centos启动流程
查看>>
php 设计模式
查看>>
后端技术精选 - 收藏集 - 掘金
查看>>
Laravel 服务容器
查看>>
6天面试、斩获6家硅谷巨头Offer,我是如何做到的?
查看>>
mac安装kubernetes并运行echoserver
查看>>
多页架构的前后端分离方案(webpack+express)
查看>>
算法(第4版) Chapter 1
查看>>
前端技术选型的遗憾和经验教训
查看>>
“亲切照料”下的领域驱动设计
查看>>
GIT
查看>>
SRE工程师到底是做什么的?
查看>>
解读:Red Hat为什么收购Ansible
查看>>
PHP json_encode() 函数介绍
查看>>