数据结构-堆

embedded/2024/9/24 13:15:37/

堆通常是一个可以被看做一棵树的数组对象。堆的具体实现一般不通过指针域,而是通过构建一个一维数组与二叉树的父子结点进行对应,因此堆总是一颗完全二叉树。对于任意一个父节点的序号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/embedded/24568.html

相关文章

新手向:HTML进阶

一&#xff0c;列表 列表分为有序列表&#xff0c;无序列表&#xff0c;定义列表三种 1.有序列表 ol 嵌套 li&#xff0c;ol 是有序列表&#xff0c;li 是列表条目 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8">…

数据结构--线性表之顺序表

本篇主要整理介绍数据结构--线性表的使用&#xff0c;持续更新中。 老铁们&#xff0c;整理不易&#xff0c;创作不易&#xff0c;先赞后看养成习惯&#xff0c;你的支持是对我更新最大的鼓励&#xff01; 线性表 知识框架 线性表概念&#xff1a;线性表 &#xff08; linear…

JavaEE技术之MySql高级(索引、索引优化、sql实战、View视图、Mysql日志和锁、多版本并发控制)

文章目录 1. MySQL简介2. MySQL安装2.1 MySQL8新特性2.2 安装MySQL2.2.1 在docker中创建并启动MySQL容器&#xff1a;2.2.2 修改mysql密码2.2.3 重启mysql容器2.2.4 常见问题解决 2.3 字符集问题2.4 远程访问MySQL(用户与权限管理)2.4.0 远程连接问题1、防火墙2、账号不支持远程…

设计模式- 访问者模式(Visitor Pattern)结构|原理|优缺点|场景|示例

设计模式&#xff08;分类&#xff09; 设计模式&#xff08;六大原则&#xff09; 创建型&#xff08;5种&#xff09; 工厂方法 抽象工厂模式 单例模式 建造者模式 原型模式 结构型&#xff08;7种&#xff09; 适配器…

centos学习-压缩和解压缩命令

CentOS 压缩与解压缩命令详解 在CentOS操作系统中&#xff0c;压缩和解压缩命令是极为常用的工具&#xff0c;用于对文件进行打包、压缩和解压缩操作。这些命令能够方便地处理大量的文件&#xff0c;使其更易于拷贝、移动和存储。本文将详细介绍CentOS中常见的压缩解压缩命令的…

情感类ppt素材

小清新手绘插画风毕业季毕业相册同学录画册纪念册PPT下载 - 觅知网这是一张关于清新毕业相册的PPT模板&#xff0c;清新风格设计&#xff0c;加上风为装饰元素&#xff0c;包含毕业相册、毕业季、毕业、同学、纪念等主题内容&#xff0c;也可用作毕业相册PPT、毕业季PPT、毕业P…

【论文阅读】Image Super-Resolution with Non-Local Sparse Attention

Image Super-Resolution with Non-Local Sparse Attention 论文地址摘要1. 简介2. 相关工作2.1.稀疏表示形式。2.2 Non-Local Attention (NLA) for image SR. 3. 非局部稀疏注意力&#xff08;NLSA&#xff09;3.1 稀疏注意力的一般形式3.2. Attention Bucket from Locality Se…

a-table 控制列的展示和隐藏

一、业务场景&#xff1a; 最近在使用 Antd-vue 组件库的时候&#xff0c;a-table需要根据不同角色的权限显示和隐藏 columns的列 为了避免大家走弯路&#xff0c;为大家整理了一下&#xff0c;粘走可以直接用的那种 二、具体实现步骤&#xff1a; 1.在需要显示与隐藏的列增加一…