数据结构之:堆

news/2024/5/20 9:35:31 标签: 数据结构, 算法,

(Heap)是计算机科学中的一种特别的完全二叉树结构,它满足某种特定顺序,用于实现优先队列等数据结构主要有两种类型:最大(Max Heap)和最小(Min Heap)。

定义

  • 最大:在最大中,任何一个父节点的值都大于或等于它的子节点的值。这意味着的根节点包含了中的最大值。
  • 最小:在最小中,任何一个父节点的值都小于或等于它的子节点的值。这意味着的根节点包含了中的最小值。

特性

  1. 完全二叉树是一种特殊的完全二叉树,除了最后一层外,其他每一层都被完全填充,并且所有节点都尽可能地向左对齐。
  2. 性质中的每个节点都满足子节点小于(最大)或大于(最小)父节点的性质。

表示

通常使用数组来表示。对于给定位置的元素i(从0开始计数):

  • 它的父节点位置是 (i - 1) / 2
  • 它的左子节点位置是 2*i + 1
  • 它的右子节点位置是 2*i + 2

操作

  • 插入(Insert):在中插入一个新元素。新元素被加到的末尾,然后通过一系列上浮(对于最大)或下沉(对于最小)操作,恢复的性质。
  • 删除(Delete):在最大中删除根节点(即最大元素),在最小中删除根节点(即最小元素)。通常,的最后一个元素被移动到根节点,然后通过一系列下沉操作,恢复的性质。
  • 构建(Build):将一个无序数组构建成一个。可以通过从最后一个非叶子节点开始,向前进行下沉操作,直到根节点,来实现。

应用

  • 优先队列是实现优先队列的理想结构,可以快速访问队列中的最大值或最小值。
  • 排序排序算法是基于的选择排序,通过构建最大或最小,来实现数组的排序。
  • 算法:在Dijkstra和Prim算法中,用于高效地选取最小边或最短路径。

结合了二叉树的结构特点和数组的简单性,提供了一种高效的方式来实现动态排序和优先级队列管理。


http://www.niftyadmin.cn/n/5394608.html

相关文章

从 SOCKS5、代理IP 到 HTTP 的趣味解读

在数字化时代,网络安全已成为人们日常生活和工作中不可或缺的重要议题。然而,随着网络技术的发展,我们也发现了一些趣味横生的网络代理技术,比如 SOCKS5、代理IP 和 HTTP 代理。本文将以轻松愉快的方式,探讨这些技术在…

数据可视化引领智慧仓储新时代

随着科技的飞速发展,数据可视化已然成为智慧仓储领域的璀璨明珠,其强大的功能和多面的作用让智慧仓储焕发出勃勃生机。让我们一同探索,数据可视化究竟在智慧仓储中起到了怎样的作用。下面我就以可视化从业者的角度来简单谈谈这个话题。 在这…

【Java设计模式】二、单例模式

文章目录 1、懒汉式2、双重检查3、静态内部类4、饿汉式5、枚举6、单例模式的破坏:序列化和反序列化7、单例模式的破坏:反射 单例模式即在程序中想要保持一个实例对象,让某个类只有一个实例单例类必须自己创建自己唯一的实例,并对外…

C# OpenCvSharp DNN Yolov8-OBB 旋转目标检测

目录 效果 模型信息 项目 代码 下载 C# OpenCvSharp DNN Yolov8-OBB 旋转目标检测 效果 模型信息 Model Properties ------------------------- date:2024-02-26T08:38:44.171849 description:Ultralytics YOLOv8s-obb model trained on runs/DOT…

XGB-12:在 Kubernetes 上进行分布式 XGBoost 训练

通过 Kubeflow XGBoost Training Operator 支持在 Kubernetes 上进行分布式 XGBoost 训练和批量预测。 操作步骤 为在 Kubernetes 集群上运行 XGBoost 作业,执行以下步骤: 在 Kubernetes 集群上安装 XGBoost Operator。 XGBoost Operator 旨在管理 XGB…

机器学习YOLO操作全流程​​编

YOLO介绍 Ultralytics YOLOv8,是最新的著名实时目标检测和图像分割模型。它基于深度学习和计算机视觉的最新进展,提供了无与伦比的速度和精度性能。由于其精简的设计,适用于各种应用,并且可以轻松适配不同的硬件平台,从边缘设备到云端API。 探索 YOLOv8 文档,这是一个全…

MAC M1 安装mongodb7.0.5 版本

1、进入官网 Download MongoDB Community Server | MongoDBDownload MongoDB Community Server non-relational database to take your next big project to a higher level!https://www.mongodb.com/try/download/community 2、选择版本 3、下载后解压 放到 /usr/local 并修改…

HarmonyOS-配置卡片的配置文件

配置卡片的配置文件 卡片相关的配置文件主要包含FormExtensionAbility的配置和卡片的配置两部分: 卡片需要在module.json5配置文件中的extensionAbilities标签下,配置FormExtensionAbility相关信息。FormExtensionAbility需要填写metadata元信息标签&am…