当前位置: 首页 > news >正文

堆的创建和说明

文章目录

目录

文章目录

前言

小堆:

大堆: 

二、使用步骤

1.创建二叉树

2.修改为堆

3.向上调整

结果实现 

总结


前言

我们已经知道了二叉树的样子,但是一般的二叉树是没有什么意义的,所以我们会使用一些特殊的二叉树来进行实现,而堆就为特殊的二叉树来表示的。


一、堆是什么?

堆是一种特殊的二叉树,由完全二叉树来表示,分为小堆和大堆的表现形式,小堆的表现形式为父节点比孩子节点要小,下面的根节点同样满足这个条件,大堆与之相反,父节点要比孩子节点大,根节点同样满足条件。

小堆:

大堆: 

二、使用步骤

1.创建二叉树

创建堆我们首先需要创建一个二叉树,我们可以使用数组的形式来表示二叉树,逻辑结构上我们将数组看为二叉树的形式,物理结构上还为数组,我们现在需要将其修改为堆。

2.修改为堆

我们需要得知其的父节点个子节点,可以举例为第一个节点为父节点下标为0,子节点的下标为1和2。当父节点下标为1时,子节点下标3和4。由此可以推出公式,

父节点=(子节点-1)/2

子节点=父节点*2+1

通过这两个公式我们就可以试着将二叉树修改为堆。

3.向上调整

我们建造一个小堆要使父节点比子节点都要小,我们可以通过子节点和父节点进行对比,如果子节点更小的话就将其进行交换,我们可以通过公式由子节点来找到父节点来进行实现,结束条件就为子节点小于或等于0时。

void Adjiustup(typedata* ps, int child)
{int parent = (child - 1) / 2;while (child > 0){if (ps[child] < ps[parent]){Swap(&ps[child], &ps[parent]);child = parent;parent = (child - 1) / 2;}else{break;}}
}

结果实现 

运行结果如图所示,成功创建小堆,如果要创建大堆的话,只需要修改子节点和父节点的比较条件即可。


总结

一般的二叉树是没有什么意义的,这个堆我们可以根据其的特性进行一些有意义的事情,希望我的这篇文章对您有所帮助,如有错误,欢迎指出。

相关文章:

堆的创建和说明

文章目录 目录 文章目录 前言 小堆&#xff1a; 大堆&#xff1a; 二、使用步骤 1.创建二叉树 2.修改为堆 3.向上调整 结果实现 总结 前言 我们已经知道了二叉树的样子&#xff0c;但是一般的二叉树是没有什么意义的&#xff0c;所以我们会使用一些特殊的二叉树来进行实现&a…...

【玩转python】入门篇day14-函数

1、函数的定义 函数通过def定义&#xff0c;包括函数名、参数、返回值 # 定义函数 def test(a,b): # a,b表示形式参数print(a b)#函数体(具体的功能)return a*b #返回值# 函数调用 test(12,43) # 12和43表示实际参数,在调用函数时,会替换形式参数a,b下面这个展示了稍微复…...

uni-app 将base64图片转换成临时地址

function getTempFilePath(base64Data) {return new Promise((resolve, reject) > {const fs uni.getFileSystemManager()base64Data base64Data.split(,)[1]const fileName temp_image_ Date.now() .png // 自定义文件名&#xff0c;可根据需要修改const filePath un…...

C#用Socket实现TCP客户端

1、TCP客户端实现代码 using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; using System.Threading.Tasks;namespace PtLib.TcpClient {public delegate void Tcp…...

jmeter-beanshell学习15-输入日期,计算前后几天的日期

又遇到新问题了&#xff0c;想要根据获取的日期&#xff0c;计算出前面两天的日期。网上找了半天&#xff0c;全都是写获取当天日期&#xff0c;然后计算昨天的日期&#xff0c;照葫芦画瓢也没改出来想要的&#xff0c;最后求助了开发同学。 先放上网上获取当天&#xff0c;计…...

Zabbix 7.0 安装

在zabbix官网中有着比较完善的安装步骤&#xff0c;针对不同的系统都有。可以直接按照举例说明进行安装。本文只是针对其提供的安装步骤进行一些说明解释补充。 安装环境 操作系统版本&#xff1a;AlmaLinux 9.4&#xff08;10.10.20.200&#xff09;zabbix版本&#xff1a;7.…...

软考高级-系统架构设计师

2024广东深圳考试时间 报考人员可登录中国计算机技术职业资格网&#xff08;http://www.ruankao.org.cn&#xff09;进行网上报名&#xff0c;报名前须扫码绑定个人微信&#xff0c;不允许代报名。 上半年考试报名信息填报时间&#xff1a;2024年3月25日9:00&#xff0d;4月2日…...

Notepad++ 安装 compare 插件

文章目录 文章介绍对比效果安装过程参考链接 文章介绍 compare 插件用于对比文本差异 对比效果 安装过程 搜索compare插件 参考链接 添加链接描述...

大数据技术原理-spark的安装

摘要 本实验报告详细记录了在"大数据技术原理"课程中进行的Spark安装与应用实验。实验环境包括Spark、Hadoop和Java。实验内容涵盖了Spark的安装、配置、启动&#xff0c;以及使用Spark进行基本的数据操作&#xff0c;如读取本地文件、文件内容计数、模式匹配和行数…...

第四范式上线搜广推一体化平台 赋能企业高效增长

产品上新 Product Release 今天&#xff0c;第四范式产品再度上新&#xff0c;正式升级并推出的“搜广推”一体化平台——天枢。 天枢拥有全面的用户画像分析、端到端的搜索推荐一体化、一站式流量运营管理等能力&#xff0c;集合智能搜索、智能推荐和智能推广三大能力于一身&a…...

智能小程序 Ray 开发面板 SDK —— 智能设备模型通用能力一键执行 SDK 汇总(一)

getTapToRunRules 描述 查询当前家庭下可绑定的一键执行列表&#xff0c;会去掉失效或自动化规则。 请求参数 参数数据类型说明是否必填devIdstring设备 ID&#xff0c;默认从设备环境中取否gidstring家庭 ID&#xff0c;默认从当前家庭中取否containStandardZigBeeboolean…...

特大喜讯:我的作品被河北某大学选做教材

...

将时间用于符合当下的未来思考——读《纳瓦尔宝典》

在财富积累的篇章中&#xff0c;倡导的核心理念是“不要通过出租时间来赚取收入”。沿着这条道路&#xff0c;可以通过以下智慧指引来避免不必要的迂回&#xff1a;首先&#xff0c;不要让自己深陷于日常的琐碎事务中&#xff0c;而应以开阔的心胸去探索和吸收新的知识。其次&a…...

CentOS-Stream-9仿冒Rocky-9通过Kolla-ansible部署OpenStack 2024.1

CentOS-Stream-9仿冒Rocky-9通过Kolla-ansible部署OpenStack 2024.1 OpenStack及Kolla项目的最新稳定版产品不再提供对CentOS-Stream-9的容器镜像支持&#xff0c;但考虑到 Rocky-9对RHEL/CentOS-Stream-9进行了binary级别的兼容&#xff0c;因此在CentOS-Stream-9上仿冒Rocky…...

Python机器学习实战:分类算法之支持向量机-垃圾邮件识别

为了解决特定问题而进行的学习是提高效率的最佳途径。这种方法能够使我们专注于最相关的知识和技能&#xff0c;从而更快地掌握解决问题所需的能力。 目录 支持向量机算法介绍 练习题 Python代码与分析 支持向量机和朴素贝叶斯的联系 支持向量机算法介绍 支持向量机&#…...

秒懂Linux之自动化构建工具-make/Makefile

目录 一.前文摘要 二.make/Makefile 一.前文摘要 在学习自动化构建工具前我们先来补充一下动静态库的相关指令 动态库指令 gcc -o 文件&#xff08;重命名&#xff09; 源文件 静态库指令 gcc -o 文件&#xff08;重命名&#xff09; 源文件 -static 二.make/Makefile 怎么形…...

.net core + vue 搭建前后端分离的框架

目录 步骤一&#xff1a;创建.NET Core后端项目 步骤二&#xff1a;创建Vue.js前端项目 步骤三&#xff1a;集成后端和前端项目 步骤一&#xff1a;创建.NET Core后端项目 安装.NET Core SDK&#xff1a; 确保你的开发环境中已安装了最新版本的.NET Core SDK。你可以从 .NET …...

小阿轩yx-KVM+GFS 分布式存储系统构建 KVM 高可用

小阿轩yx-KVMGFS 分布式存储系统构建 KVM 高可用 案例分析 案例概述 使用 KVM 及 GlusterFS 技术&#xff0c;结合起来实现 KVM 高可用利用 GlusterFS 分布式复制卷对 KVM 虚拟机文件进行分布存储和冗余 分布式复制卷 主要用于需要冗余的情况下把一个文件存放在两个或两个…...

centos安装mysql 5.7版本

因为要继续第二阶段的学习&#xff0c;windows里面的mysql版本&#xff0c;很多设置没有。因此弄了一个虚拟机&#xff0c;安装了centos&#xff0c;在里面安装mysql。 看了《centos安装mysql 5.7版本》里面有设置my.cnf文件&#xff0c;这个在虚拟机里面编辑&#xff0c;手动敲…...

SQL——查询sql执行顺序

在SQL查询中&#xff0c;虽然我们在编写查询时遵循一定的逻辑顺序&#xff08;SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY&#xff09;&#xff0c;但实际上&#xff0c;数据库在执行这些查询时遵循的是不同的物理执行顺序。这个物理执行顺序是数据库管理系统&#xff0…...

C++笔记 缺省值 函数重载 名字空间域(基础核心)

本文为C基础核心知识点笔记&#xff0c;聚焦「缺省值」「函数重载&#xff08;概念&#xff09;」「名字空间域」三大高频基础考点&#xff0c;语言通俗、重点突出&#xff0c;兼顾入门理解和考试记忆&#xff0c;适合新手入门、作业复习及GitHub归档。一、缺省值&#xff08;默…...

从仿真到实物:音频功率放大器PCB设计前的Proteus验证全流程

从仿真到实物&#xff1a;音频功率放大器PCB设计前的Proteus验证全流程 在硬件开发领域&#xff0c;音频功率放大器的设计往往需要经历多次迭代才能达到理想性能。传统开发流程中&#xff0c;工程师们常常需要反复制作PCB原型并进行实测&#xff0c;这不仅耗时耗力&#xff0c;…...

从软件到硬件:Taalas ASIC如何让AI成为“物理基础设施”

当AI推理速度突破15000 tokens/秒&#xff0c;我们谈论的不再是“更快的服务”&#xff0c;而是“消失的延迟”。过去两年&#xff0c;大模型领域的竞争焦点高度集中在算力堆叠和参数规模上。GPU成为稀缺资源&#xff0c;英伟达H200、B200的发布一次次刷新算力上限&#xff0c;…...

VideoAgentTrek-ScreenFilter高级配置:针对特定内容的过滤规则自定义教程

VideoAgentTrek-ScreenFilter高级配置&#xff1a;针对特定内容的过滤规则自定义教程 你是不是在用VideoAgentTrek-ScreenFilter处理视频时&#xff0c;发现有些内容它没过滤掉&#xff0c;或者有些不该过滤的却被误伤了&#xff1f;比如&#xff0c;你想屏蔽掉视频里某个特定…...

论文AI率怎么免费降?【2026建议收藏】DeepSeek/Kimi/豆包三大模型专属降重指令全家桶

很多时候大学生写论文逻辑太严谨、话术太规范&#xff0c;反而会导致AI率过高&#xff0c;且一旦AI率过高&#xff0c;轻则退回重改&#xff0c;重则取消答辩资格&#xff0c;这后果谁都担不起。 为了帮大家有效降低aigc率&#xff0c;这周我专门针对目前市面上最主流的三款大…...

Qwen-Image-2512实现Python爬虫数据自动化处理:电商图片批量生成方案

Qwen-Image-2512实现Python爬虫数据自动化处理&#xff1a;电商图片批量生成方案 1. 引言 如果你是做电商的&#xff0c;或者负责过电商运营&#xff0c;肯定遇到过这个头疼的问题&#xff1a;上架一个新商品&#xff0c;或者给一批老商品换季上新&#xff0c;需要准备大量的…...

IT6500电源蜂鸣器太吵?教你用Python远程静音并实现电压步进扫描

IT6500电源蜂鸣器静音与电压步进扫描的Python实战指南 深夜的实验室里&#xff0c;IT6500电源的蜂鸣器突然响起&#xff0c;刺耳的"哔哔"声打破了宁静&#xff0c;这种场景对于电子工程师来说再熟悉不过。本文将带你用Python彻底解决这个恼人的问题&#xff0c;同时实…...

别再只会发文本了!SpringBoot整合钉钉机器人,这5种高级消息模板让你的通知更专业

SpringBoot与钉钉机器人&#xff1a;五种高级消息模板实战指南 如果你还在用单调的文本消息推送系统通知&#xff0c;那么你的团队协作工具可能只发挥了50%的潜力。钉钉机器人提供的富文本消息类型&#xff0c;能够将枯燥的系统通知转化为直观、交互式的信息卡片&#xff0c;显…...

AI开发不再卡顿:RTX4090D 24G镜像解决环境冲突全攻略

AI开发不再卡顿&#xff1a;RTX4090D 24G镜像解决环境冲突全攻略 1. 为什么选择RTX4090D 24G深度学习镜像&#xff1f; 深度学习开发者最头疼的问题莫过于环境配置。不同框架版本、CUDA版本、依赖库之间的冲突常常让人望而却步。传统环境搭建方式需要&#xff1a; 手动安装C…...

GTSAM编译避坑:为什么你的Eigen版本总是不匹配?详细排查与修复教程

GTSAM编译中的Eigen版本冲突&#xff1a;从根源到解决方案的深度指南 引言 在机器人学和计算机视觉领域&#xff0c;GTSAM&#xff08;Georgia Tech Smoothing and Mapping Library&#xff09;作为因子图优化的标杆工具&#xff0c;其重要性不言而喻。然而&#xff0c;许多开发…...