二叉堆讲解

news2024/9/20 22:23:45

二叉堆讲解

大顶堆和小顶堆

从二叉堆的结构说起,它是一棵二叉树,并且是完全二叉树,每个结点中存有一个元素(或者说,有个权值)。
堆性质:父亲的权值不小于儿子的权值(大根堆)。同样的,我们可以定义小根堆。本文以大根堆为例。

由堆性质,树根存的是最大值。
在这里插入图片描述
只要涉及到改变堆结构的操作复杂度为 O ( l o g ( n ) ) O(log(n)) O(log(n))
查询操作 O ( 1 ) O(1) O(1)

应用

贪心

合并果子
建筑抢修

维护固定大小的单调序列

假设对于给定序列,最终要输出k最小值,则用大顶堆维护
具体步骤是:

  • 如果堆中元素个数没有超过k,则继续添加
  • 如果堆中元素个数要超过k了,则添加进去后再弹出堆顶元素
  • 最终取个逆序即可。

最小函数值
序列合并

维护不固定大小的单调序列

介绍对顶堆
对顶堆由一个大根堆与一个小根堆组成,小根堆维护大值即前 k 大的值(包含第 k 个),大根堆维护小值即比第 k 大数小的其他数。
这两个堆构成的数据结构支持以下操作:

  • 插入元素:若插入的元素大于等于小根堆堆顶元素,则将其插入小根堆,否则将其插入大根堆,然后维护对顶堆;
  • 查询第k大元素:小根堆堆顶元素即为所求;(如果查询第k小元素则大根堆维护小值前k小的值,小根堆维护大值比第k小数大的其他数)
  • 删除第k大元素:删除小根堆堆顶元素,然后维护对顶堆;
  • 维护:当小根堆的大小小于 k 时,不断将大根堆堆顶元素取出并插入小根堆,直到小根堆的大小等于 k;当小根堆的大小大于 k 时,不断将小根堆堆顶元素取出并插入大根堆,直到小根堆的大小等于 k;
  • 当k值发生变化要根据新值维护对顶堆。
    黑匣子
    中位数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/536461.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AI制作视频——mov2mov以及inpaint

背景 AI制作视频的几种思路 1.从零开始生成:清华的cogview,runway gen-1、gen-2,微软的女娲 这个思路,就是认为可以通过文字描述的方式把视频画面描述出来,通过对文本-视频帧内容-视频内容的数据对的平行语料的学习…

微软限制我们使用Windows系统了,怎么办?

正如中国工程院院士倪光南所说,操作系统的成功与否,关键在于生态系统,需要搭建起完整的产业链上各个主体共生的生态体系。 当前我国国产操作系统市场发展很快,相比技术和市场突破,真正需要解决的问题是如何把生态建好…

Jvm-08a.类加载器

类与类加载器 对于任意一个类,都必须由加载它的类加载器和这个类本身一起共同确立其在Java虚拟机中的唯一性,每一个类加载器,都拥有一个独立的类名称空间。 通俗的讲就是比较两个类是否"相等",只有在这两个类是由同一…

设计模式实战 | 迭代器模式 | 分词器

1、场景 假设有下面这样一个字符串属性, 代表着属性逐级调用, 我们需要解析出每一个字段属性方便我们后续进行业务处理。 String properties "school.teacher[语文].student[3].user[4].english.score";2、传统写法 遍历该属性字符串然后不…

ChatGLM-6B模型结构组件源码阅读

一、前言 本文将介绍ChatGLM-6B的模型结构组件源码。 代练链接:https://huggingface.co/THUDM/chatglm-6b/blob/main/modeling_chatglm.py 二、激活函数 torch.jit.script def gelu_impl(x):"""OpenAIs gelu implementation."""r…

k8s系列(三)——kubernetes架构及部署

引入 在正式引入K8s之前,我们先来看一张图 虚拟化技术演历路径可分为三个时代: 物理机时代,多个应用程序可能跑在一台物理机器上; 这种方式会造成一旦某个服务出现溢出或者未知的错误,从而影响机器上所有服务的正常…

C++ -- 红黑树封装set和map

文章目录 1. 红黑树概念和性质1.1 概念1.2 性质1.3 实例1.4 分析 2. 节点定义3. 插入操作4. 检测5. 红黑树代码6. 红黑树实现set和map6.0 类设计图6.1 红黑树包装复用6.2 红黑树实现set6.3 红黑树实现map6.4 剖析代码6.4.1 如何复用6.4.2 如何区分set和map比较方式6.4.3 set和m…

如何用appuploader上架

转载:下载和安装appuploader IOS开发工具官网地址 Appuploader home -- A tool improve ios develop efficiency such as submit ipa to appstore and manage ios certificate 最新版本已经优化了没支付688给apple的账号登录流程,无需再安装其他软件。…

SDK案例配置记录

目前的极简配置 注意事项 默认的属性配置中,大多采用环境变量的形式,方便不同设备通用 比如“常规”->“输出目录”为 $(SolutionDir)..\bin\win_msvc2017$(Platform)\$(Configuration)\案例运行前的配置(除MwBatchSimPlugin&#xff0…

如何评估用户需求的价值?关键看4方面

一、需求本身是否有价值 评估一个需求是否有价值,主要是通过以下几个方面:需求的产生源、需求产生的时机(情景价值)、需求如何产生(问题解决价值)、需求如何解决(解决需求)。 在情景…

web安全学习笔记【网络安全】

前言 本文简单记录一下我学习 Web 安全方面的笔记。 本文不涉及 IIS、Windows 和 SqlServer 的安全管理与配置,尽量只谈编程相关的安全问题。 这个 Web 安全学习路线,整体大概半年左右,具体视每个人的情况而定。 (上传一直很模…

支持AI算法定制的4G摄像头模组解决方案

随着科技的不断发展,现在人们对于监控摄像头的需求越来越高,但是市场上的大多数摄像头组件都是标准化的,很难满足不同应用场景的需求。 不过,现在有了这款支持AI算法定制的4G摄像头模组解决方案,这个问题就完美的解决了…

shell脚本教程

目录 一、shell历史 二、执行脚本 三、基本语法 3.1变量 3.1.1变量的分类 3.1.2删除变量 3.2文件名代换(Globbing) 3.3命令代换 3.4算术代换 3.5转义字符 3.6单引号 3.7双引号 四、Shell脚本语法 4.1条件测试 4.2分支 4.2.1if/then/elif…

重磅!用友荣登全球5强

近日,全球权威信息技术研究和顾问公司Gartner发布《Market Share: All Software Markets, Worldwide,2022》报告,用友在EAM(资产管理)市场再创新高,市场占有率位居全球第五位,亚太第一位&#x…

quic详解

目录 一 http简介 二 quic协议详解 1 重传机制 2 流量控制 3连接迁移 一 http简介 http0.9 1991年发布, 没有header,功能非常简单,只支持GET http1.0 1996年发布,明文传输安全性差,header特别大。它相对0.9有以…

postgres_exporter 部署

目录 - 下载地址- 配置环境变量- 启动vim ./start.shvim ./stop.shqueries.yaml - 配置prometheus - 下载地址 https://github.com/prometheus-community/postgres_exporter/releases - 配置环境变量 - 启动 因启动前需要配置环境变量后再进行启动 运行如下语句&#xff1a…

【自动化测试入门知识】自动化测试生命周期

如今,项目经理和开发人员面临着用最少的资源并在日渐缩减的时间表中构建可靠应用程序的挑战。因此,组织正在转向自动化测试以有效地实现此目标。 在自动化测试方面,我们许多人认为这只是SDLC(软件开发生命周期)的一部…

【竣达】浅谈电视台机房智能化动力环境监控系统管理

电视台作为面向全国甚至是世界的广播平台,在节目转播过程中不能有任何的闪失,为了最大限度保障电视节目的安全播出,一套完整的机房动力环境监控系统必不可少。 电视台机房及广播控制室建立包括机房动力、环境及安防的监控系统,主…

30岁女程序媛,对职业和未来的迷茫和焦虑

前言 2023快过去一半马上就要2024年了,92年的我就要步入30的行列了。 一转眼,也到了三十而立的年纪。 反观自己,到了这个时候,更多的是迷茫、彷徨、焦虑、无措 但也在不断地跌跌撞撞中,找到了自己的节奏和目标。 …

程序员一个月拿两万,得知卖猪肉可以赚五万,你是选择做程序员还是卖猪肉?

在知乎上看到这么个帖子,觉得挺有意思,大家一起瞧瞧? 对此,我也看到了许多犀利的回答哈 **A:**我反过来问你,如果一对夫妇卖猪肉一个月只能挣一万,听说一名程序员一个月拿五万,他们…