数据结构-堆

ops/2025/2/5 7:47:02/

堆通常是一个可以被看做一棵树的数组对象。堆的具体实现一般不通过指针域,而是通过构建一个一维数组与二叉树的父子结点进行对应,因此堆总是一颗完全二叉树。对于任意一个父节点的序号n来说(这里n从0算),它的子节点的序号一定是2n+1,2n+2,因此可以直接用数组来表示一个堆。不仅如此,堆还有一个性质:堆中某个节点的值总是不大于或不小于其父节点的值。将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。堆常用来实现优先队列,在面试中经常考的问题都是与排序有关,比如堆排序、topK问题等。由于堆的根节点是序列中最大或者最小值,因而可以在建堆以及重建堆的过程中,筛选出数据序列中的极值,从而达到排序或者挑选topK值的目的。

数据结构中的堆(Heap)是一种特殊的树形数据结构,可以看作是一棵完全二叉树。它的主要特点是根节点的键值是所有节点中最小(或最大)的,并且堆中每个父节点的键值都小于或等于(或大于或等于)其所有子节点的键值。

堆通常使用数组来表示,其中每个元素都对应于树中的一个节点。在数组中,父节点和子节点之间的关系可以通过下标来直接计算。例如,对于任意节点i,其父节点可以通过(i-1)/2来计算,而其左右子节点则可以通过2*i+1和2*i+2来计算。

根据根节点键值的不同,堆可以分为最小堆和最大堆。最小堆中根节点的键值是所有节点中的最小值,而最大堆中根节点的键值是所有节点中的最大值。

堆在计算机科学中有着广泛的应用,例如堆排序、优先队列、Dijkstra算法等。在这些应用中,堆通常被用来快速找到最小(或最大)元素,或者快速删除最小


http://www.ppmy.cn/ops/22368.html

相关文章

OceanBase 分布式数据库【信创/国产化】- OceanBase V4.3 更新了什么 What‘s New

本心、输入输出、结果 文章目录 OceanBase 分布式数据库【信创/国产化】- OceanBase V4.3 更新了什么 Whats New前言OceanBase 数据更新架构Whats NewOLAP 能力列存引擎旁路导入新向量化引擎物化视图OceanBase 分布式数据库【信创/国产化】- OceanBase V4.3 更新了什么 What’s…

风丘电动汽车热管理方案 为您的汽车研发保驾护航

热管理技术作为汽车节能、提高经济性和保障安全性的重要措施,在汽车研发过程中具有重要作用。传统燃油汽车的热管理系统主要包括发动机、变速器散热系统和汽车空调,而电动汽车的热管理系统在燃油汽车热管理架构的基础之上,又增加了电机电控热…

「生存即赚」链接现实与游戏,打造3T平台生态

当前,在线角色扮演游戏(RPG)在区块链游戏市场中正迅速崛起,成为新宠。随着区块链技术的不断进步,众多游戏开发者纷纷将其游戏项目引入区块链领域,以利用这一新兴技术实现商业价值的最大化。在这一趋势中&am…

Jmeter05:配置环境变量

1 Jmeter 环境 1.1 什么是环境变量?path什么用? 系统设置之一,通过设置PATH,可以让程序在DOS命令行直接启动 1.2 path怎么用 如果想让一个程序可以在DOS直接启动,需要将该程序目录配置进PATH 1.3 PATH和我们的关系…

ChromaDB教程

使用 Chroma DB,管理文本文档、将文本嵌入以及进行相似度搜索。 随着大型语言模型 (LLM) 及其应用的兴起,我们看到向量数据库越来越受欢迎。这是因为使用 LLM 需要一种与传统机器学习模型不同的方法。 LLM 的核心支持技术之一是…

【线性代数】[第六章:二次型][自用]

1 知识点 1.1 二次型的定义,矩阵表示形式 (1) 1.2 二次型的标准型、规范型 (1)只有平方项的二次型。(混合项的系数全为0) (2)如果标准型中,系数只有1,-1和0,那么称为二次型的规范型,因为标准型中,1,-1,0的个数是由正负惯性指数决定的,而合同的矩阵正负惯性指…

HTML文本域如何设置为禁止用户手动拖动

在HTML中,文本域(textarea)通常允许用户通过拖拽其右下角来调整大小。然而,有时我们可能希望禁止这种手动拖动行为,以固定文本域的大小。要实现这一目标,可以使用CSS的resize属性。 具体步骤如下&#xff…

基于Spring Boot的商务安全邮件收发系统设计与实现

基于Spring Boot的商务安全邮件收发系统设计与实现 开发语言:Java框架:springbootJDK版本:JDK1.8数据库工具:Navicat11开发软件:eclipse/myeclipse/idea 系统部分展示 已发送效果图,用户可以对已发送信息…