网站建站与优化网站编辑岗位

news/2025/9/23 14:13:00/文章来源:
网站建站与优化,网站编辑岗位,医院做网站需要多少钱,阿里云 wordpress主机名堆的概念 堆是一棵完全二叉树#xff0c;一般使用数组来存储。通俗来讲堆其实就是利用数组来维护一个完全二叉树。 按照堆的特点可以把堆分为大顶堆和小顶堆 大顶堆#xff1a;堆的每个结点的值都大于或等于其左右孩子结点的值 小顶堆#xff1a;堆的每个结点的值都小于或…堆的概念 堆是一棵完全二叉树一般使用数组来存储。通俗来讲堆其实就是利用数组来维护一个完全二叉树。 按照堆的特点可以把堆分为大顶堆和小顶堆 大顶堆堆的每个结点的值都大于或等于其左右孩子结点的值 小顶堆堆的每个结点的值都小于或等于其左右孩子结点的值 根据堆的概念利用数组维护的完全二叉树可以推导出 假设 节点A 在数组 tree 的索引为 i 则 1A节点的左节点索引leftIdx (i1)*2 -1 2A节点的右节点索引rightIdx (i1)*2 3A的父节点索引parentIdx (i-1)/2 堆的构建 堆的构建可以看成是空堆中逐渐插入数据因此构建堆应该先实现堆的插入方法。 往堆中插入节点 往堆中插入数据时可能会破坏大顶堆或小顶堆根节点大于左右节点的性质因此需要做出调整。 堆的插入流程如下 将插入的数组置于数组的尾部从尾部开始比较当前节点一开始为插入的节点与父节点是否满足大顶堆或小顶堆的性质不满足则交换父子节点。重复2步骤直到满足大顶堆性质或到达堆顶 示例代码 /*** 插入的流程* 1.先把元素放到数组最后* 2.与父元素比较若父元素小于子元素则交换父子元素直到父元素大于等于子元素* param n*/public void add(int n){if(sizecapacity){throw new RuntimeException(堆达到最大容量);}//新节点的索引int curIdx size;//将新节点插入数组尾部table[curIdx] n;//获得父节点索引具体代码在参考后文的完整示例//父节点索引 pIdx (curIdx-1)/2int pIdx getParent(curIdx);/*** 调整堆使其符合大顶堆的性质时间复杂度O(logn)* 与父元素比较若父元素小于子元素则交换父子元素直到父元素大于等于子元素*/while(table[curIdx]table[pIdx]){//子节点值大于父节点交换父子节点int t table[pIdx];table[pIdx] table[curIdx];table[curIdx] t;curIdx pIdx;pIdx getParent(curIdx);}size;}在清楚堆的插入过程之后堆的构建就是直接调用插入方法往堆中存放数据。 同时由上述可知往堆中添加元素的时间复杂度为 O(logN)因此构建堆的时间复杂度为n次插入即 O(NlogN) 删除堆顶节点 删除堆顶元素的流程 用堆的最后一个元素数组中的最后一个元素代替堆顶元素数组的第一个元素判断当前元素一开始为堆顶是否小于左右子元素小于则用左右子元素中较大的元素和当前元素进行交换重复步骤2直接节点大于左右元素或没有左右元素 示例代码 /*** 删除并返回堆顶元素* 删除流程* 1.把最后一个元素代替删除位置的元素* 2.与子元素比较把较大的子元素与当前元素交换直到当前元素大于左右子元素* return 堆顶元素*/public int remove(){//待删除的堆顶元素int v table[0];//用堆的最后一个元素数组中的最后一个元素代替堆顶元素数组的第一个元素table[0] table[size-1];size--;//调正堆使堆满足大顶堆的性质//当前元素索引一开始为堆顶元素int curIdx 0;while(true){//获得当前元素的左右节点索引具体代码参考后面完整示例int lf getLeftChild(curIdx);int rt getRightChild(curIdx);if(lf-1rt-1){//没有左右元素无需调整break;}//较大的子元素索引int swapIdx;if(lf-1||rt-1){swapIdx lf-1?rt:lf;}else{swapIdx table[rt]table[lf]?rt:lf;}if(table[curIdx]table[swapIdx]){//父元素大于左右子元素结束交换break;}//用较大的子元素代替父元素int t table[curIdx];table[curIdx] table[swapIdx];table[swapIdx] t;curIdx swapIdx;}//返回被删除的元素return v;}完整代码 /*** author Darren* date 2021/6/24 15:54* 简单大顶堆的实现*/ public class Heap {//堆的容量int capacity;//已存放的节点数int size;//存放完全二叉树结构的数组int[] table;Heap(int capacity){this.capacity capacity;table new int[capacity];}/*** 插入的流程* 1.先把元素放到数组最后* 2.与父元素比较若父元素小于子元素则交换父子元素直到父元素大于等于子元素* param n*/public void add(int n){if(sizecapacity){throw new RuntimeException(堆达到最大容量);}//当前元素的索引int curIdx size;//将新节点插入数组尾部table[curIdx] n;int pIdx getParent(curIdx);/*** 调整堆使其符合大顶堆的性质时间复杂度O(logn)* 与父元素比较若父元素小于子元素则交换父子元素直到父元素大于等于子元素*/while(table[curIdx]table[pIdx]){int t table[pIdx];table[pIdx] table[curIdx];table[curIdx] t;curIdx pIdx;pIdx getParent(curIdx);}size;}/*** 删除堆顶元素* 删除流程* 1.把最后一个元素代替删除位置的元素* 2.与子元素比较把较大的子元素与当前元素交换直到当前元素大于左右子元素* return*/public int remove(){//待删除的堆顶元素int v table[0];//用堆的最后一个元素数组中的最后一个元素代替堆顶元素数组的第一个元素table[0] table[size-1];size--;//调正堆使堆满足大顶堆的性质//当前元素索引一开始为堆顶元素int curIdx 0;while(true){int lf getLeftChild(curIdx);int rt getRightChild(curIdx);if(lf-1rt-1){//没有左右元素无需调整break;}//较大的子元素索引int swapIdx;if(lf-1||rt-1){swapIdx lf-1?rt:lf;}else{swapIdx table[rt]table[lf]?rt:lf;}if(table[curIdx]table[swapIdx]){//父元素大于左右子元素结束交换break;}//用较大的子元素代替父元素int t table[curIdx];table[curIdx] table[swapIdx];table[swapIdx] t;curIdx swapIdx;}return v;}public int getLeftChild(int i){int index (i1)*2-1;//indexsize 说明没有左子节点return indexsize?index:-1;}public int getRightChild(int i){int index (i1)*2;//indexsize 说明没有右子节点return indexsize?index:-1;}public int getParent(int i){return (i-1)/2;} }参考 推荐堆排序大顶堆、小顶堆----C语言 排序六 堆排序 数据结构堆Heap

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

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

相关文章

建站公司 商城dw修改wordpress主题

在并发编程中,锁是一种常用的机制,用于保护共享资源的访问。乐观锁和悲观锁是两种不同的锁机制。 乐观锁:不会一开始就加锁,在更新的时候,判断一下在此期间别人是否修改了数据,若修改了不执行此操作&#…

网站实名制 怎么做wordpress 文字折叠

前言: 为什么之前写过Golang 版的设计模式,还在重新写Java 版? 答:因为对于我而言,当然也希望对正在学习的大伙有帮助。Java作为一门纯面向对象的语言,更适合用于学习设计模式。 为什么类图要附上uml 因为很…

济宁网站建设推荐网络服务营业部

​大家好,最近实验室的BCA仪器坏了,偶然发现nanodrop也可以测蛋白浓度,省不少时间!本方法原理是:紫外吸收 友情提示:由于表格的存在,用电脑看本推文,效果更好 紫外吸收法 较为灵…

四川做网站设计哪家好天博网站建设

是引用传递。 Python的设计哲学是一切皆对象,不仅体现在内置数据类型、数据结构是对象,还包括Python编译运行需要的一些设施,比如stackframe、traceback等等。所以,为了更方便的传递数据,cpython内部全部采用指针传递…

站长工具seo综合查询pc济宁哪里有做网站的

Element - The worlds most popular Vue UI framework 2 Menu 菜单 | Element Plus 3 侦听器 | Vue.js vue中文官网

新闻类网站开发难点平台网站空间

<%#eval%>是单方向的资料连接 <%#bind%> 双方向的资料连接 <%#eval%>是只读的,你看到的那些无法更新数据的数据显示控件,可以用这个 <%#bind%> 不但可读,而且可写,那些可更新数据库的数据绑定控件,用这个 <%# DataBinder.Eval(Container.DataItem,&…

视频素材交易网站建设呼市网页设计培训

文章目录 题目解析算法原理解法一&#xff1a;暴力枚举(超时&#xff09;解法二&#xff1a;双指针单调性 代码实现暴力枚举(超时&#xff09;双指针单调性(时间复杂度为O(N)&#xff0c;空间复杂度为O(1)&#xff09; 题目解析 题目链接&#xff1a;11.盛最多水的容器 这道题…

27届春招备战一轮复习--第六期

27届春招备战一轮复习--第六期未经作者允许,禁止转载----作者:王贵祥目录27届春招备战一轮复习--第六期pythonQ :你了解 python 哪些知识? 它做什么?Q:你使用过的模型有哪些? (仅做了解,除非你项目写了或者是…

27届春招备战一轮复习--第七期

27届春招备战一轮复习--第七期未经作者允许,禁止转载----作者:王贵祥今天,我们来写点算法 题目一:(难度极低) 实现一个十进制数字报数程序,请按照数字从小到大的顺序返回一个整数数列,该数列从数字 1 开始,到…

WPF Prism

Install-Package Prism.WPF; Install-Package Prism.DryIOC; //App.xaml <prism:PrismApplication x:Class="WpfApp37.App"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"…

备份一个简易队列写法

备份一个简易队列写法 定义 typedef struct {uint8_t data[14]; } can_frame_t;typedef struct {can_frame_t frames[CAN_FRAME_QUEUE_SIZE];volatile uint8_t head;volatile uint8_t tail;volatile uint8_t count; } …

松岗做网站价格新传奇网页游戏

在将单元测试postmortem编码到另一个项目创建的代码时,我遇到了如何使用initBinder模拟与控制器绑定的验证器的这个问题&#xff1f;通常我会考虑确保我的输入是有效的,并且在验证器中进行一些额外的调用,但在这种情况下,验证器类与通过几个数据源进行检查相结合,并且测试变得相…

网站seo分析案例河南网站建设推荐

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 Python基础知识总览1. Python简介2. 安装与环境配置3. 基本语法3.1 变量与数据类型3.2 控制结构3.3 函数与模块3.4 文件操作 4. 面向对象编程&#xff08;OOP&#…

做数学题的网站有吗自助建站网站哪个好

ART公司成立于1999年&#xff0c;拥有38万员工遍布全球&#xff0c;ART一直致力于红外线光学跟踪系统的研发与生产&#xff0c;并将先进的科技应用于产品研发&#xff0c;产品制造&#xff0c;市场营销&#xff0c;产品销售以及优秀的客户支持。主要向客户提供高端的虚拟现实跟…

建站平台控制自适应网页模板企业

概述 外连接的进阶用法在行列转换中比较有优势&#xff0c;往往存在需要把数据库中的格式转换成报表格式&#xff0c;但是SQL仅仅只是查询数据的语言&#xff0c;格式转换并不是原本的用途。 全外连接 标准 SQL 里定义了外连接的三种类型&#xff0c;如下所示。 左外连接&…

公司网站开发有哪些今天西安新消息

随着科技的不断发展&#xff0c;虚拟现实&#xff08;VR&#xff09;技术已经逐渐渗透到各个领域&#xff0c;为人们的生活带来了极大的便利。在煤矿行业&#xff0c;VR技术的应用也日益受到重视&#xff0c;尤其是在煤矿安全检查方面。为了提高矿工的安全意识和技能&#xff0…

福州网站改版哪家好wordpress做英文站

&#x1f9d1; 作者简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向的学习指导…

全球做空现货黄金的网站网页制作专业个人职业生涯规划书

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注公众号【雄雄的小课堂】。最近&#xff0c;我的个人站上线啦&#xff0c;大家可以直接在浏览器的地址栏中输入&#xff1a;穆雄雄.com&#xff0c;轻轻敲击回车&#xff0c;即可直接进入……欢迎大家多多关注&#xff0c;多多留…

js网站模板最新网页游戏传奇类

介绍依赖注入只负责由其创建的对象实例容器或者子容器释放的时候&#xff0c;会释放由其创建的对象实例。推荐使用容器来来管理我们的对象的创建和释放。操作为了演示&#xff0c;我们创建一个UserService&#xff0c;并让该Service继承IDisposablepublic class UserService : …

安徽做网站电话重庆互联网公司多吗

1.背景近期由于业务调整&#xff0c;需要将Windows Server 2008 MySQL5.5数据库迁移到Windows Server 2012 MySQL8.0集群MGR中&#xff0c;由于实际部署时&#xff0c;有一台机器硬盘损坏&#xff0c;只能构建双节点MGR&#xff0c;在迁移以及应用迁移过程中遇到许多参数与迁移…