斜堆(数据结构篇)
数据结构之斜堆
斜堆
概念:
- 斜堆是左式堆的自调节形式,斜堆和左式堆间的关系类似于伸展树和AVL树间的关系
- 斜堆是具有堆序性的二叉树,但是不存在对树的结构限制
- 不同于左式堆,关于任意节点的零路径长的任何信息都不保留,因为斜堆的右路径在任何时刻都可以任意长
合并操作
- 斜堆的合并大概都跟左式堆的合并操作一样,但是交换操作不一样,斜堆的交换是无条件的
- 就是说当进行将大的根值的堆与小的根值的堆的右子堆合并后,我们就需要进行左子树跟右子树交换的操作,并不是只有到最后小的根值的堆跟新的堆合并后在进行交换
- 就是每个合并的步骤就需要交换左右子树。
实现代码:
struct heapNode{int data;heapNode* left;heapNode* right;
};class skewheap{
public:skewheap(){root=new heapNode;root->data=INT_MAX;root->left= nullptr;root->right= nullptr;}heapNode* createNode(int data){auto p=new heapNode;p->data= data;p->left= nullptr;p->right= nullptr;return p;}heapNode* merge(heapNode* h1,heapNode* h2){if(h1->left== nullptr){h1->left=h2;}else{h1->right= findmerge_node(h1->right,h2);heapNode* p=h1->left;h1->left=h1->right;h1->right=p;}return h1;}heapNode* findmerge_node(heapNode* h1,heapNode* h2){if(nullptr==h1){return h2;}if(nullptr==h2){return h1;}if(h1->data<h2->data){return merge(h1,h2);}else{return merge(h2,h1);}}void insert(int data){heapNode* add= createNode(data);if(root->data==INT_MAX){root=add;}elseroot=findmerge_node(root,add);}void delmin(){if(nullptr==root){return;}heapNode* h1=root->left;heapNode* h2=root->right;delete root;root= findmerge_node(h1,h2);}int getmin(){return root->data;}heapNode* print(heapNode* p){if(p!= nullptr){cout<<p->data<<" ";print(p->left);print(p->right);}return p;}void print(){if(root== nullptr){return;}print(root);}
private:heapNode* root;
};
尾言
完整版笔记也就是数据结构与算法专栏完整版可到我的博客进行查看,或者在github库中自取(包含源代码)
- 博客1: codebooks.xyz
- 博客2:moonfordream.github.io
- github项目地址:Data-Structure-and-Algorithms
相关文章:
斜堆(数据结构篇)
数据结构之斜堆 斜堆 概念: 斜堆是左式堆的自调节形式,斜堆和左式堆间的关系类似于伸展树和AVL树间的关系斜堆是具有堆序性的二叉树,但是不存在对树的结构限制不同于左式堆,关于任意节点的零路径长的任何信息都不保留ÿ…...
河南大学24计算机考研数据,有三个学院招收计算机相关专业,都是考的408!
河南大学(Henan University),简称“河大”,是河南省人民政府与中华人民共和国教育部共建高校,国家“双一流”建设高校,入选国家“111计划”、中西部高校基础能力建设工程、卓越医生教育培养计划、卓越法律人…...
ubuntu离线安装docker导入镜像
docker安装包 准备工作 1.准备一个docker.service文件 内容如下: [Unit] DescriptionDocker Application Container Engine Documentationhttps://docs.docker.com Afternetwork-online.target firewalld.service Wantsnetwork-online.target[Service] Typenoti…...
鸿蒙原生应用元服务开发-位置服务申请权限
申请位置权限开发指导 场景概述 应用在使用位置服务系统能力前,需要检查是否已经获取用户授权访问设备位置信息。如未获得授权,可以向用户申请需要的位置权限。 系统提供的定位权限有: ohos.permission.LOCATION:用于获取精准位置…...
基于SpringBoot的“智慧食堂”管理系统设计与实现
你好呀,我是计算机学姐码农小野!如果有相关需求,可以私信联系我。 开发语言:Java 数据库:MySQL 技术:SpringBootVue 工具:IDEA/Eclipse、Navicat、Maven 系统展示 首页 用户管理界面 菜品…...
高效记录收支明细:揭秘如何通过曲线图精准分析每月开销
在理财的道路上,你是否曾感到迷茫和无力?每个月的开销如同流水般悄无声息地滑过指尖,但你却始终难以掌握自己的财务脉络。今天,我们为你揭秘一个全新的理财方法——通过曲线图精准分析每月开销,让你的财务生活焕发智慧…...
开发注意事项
开发注意事项 简介1. 查询条件照成的OOM问题原因注意事项 2. 因为事务导致数据查询不到问题原因注意事项 简介 这篇文章主要是想记录在开发过程中遇到的坑已经注意事项。 1. 查询条件照成的OOM 问题 SIT 环境内存突然暴增,直接打到100%,导致服务频繁…...
Vue79-路由组件独有的2个新的生命周期钩子
一、需求 news.vue路由组件被缓存了(因为想要保留里面的输入框的数据!),导致,路由页面切走,组件也不会被销毁,所以,beforeDestroy()函数就不会被执行,所以,定…...
Lua博客网站支持搜索、评论、登录注册
该简易博客示例用于学习网站的基础知识与MySQL数据库。 简述:开源Lua网站开发服务(FastWeb)支持:注册、登录、文章分页、评论分页、简易权限管理和搜索功能。发帖功能支持Markdown(支持记忆功能)图示:...
BGP高级特性
BGP路由反射器 l 路由反射器的两种角色 RR(router reflector):路由反射器 client:RR客户端 l RR会将学习到的路由反射出去,从而使得IBGP路由在AS内传播时无需建立IBGP的全互联结构 l 将一台BGP路由器指定为RR的…...
鸿蒙开发:1.环境搭建和入门
环境搭建 安装HUAWEI DevEco Studio 简介 HUAWEI DevEco Studio是基于IntelliJ IDEA Community开源版本打造, 为运行在HarmonyOS和OpenHarmony系统上的应用和服务提供一站式的开发平台。 特点 1.高效智能代码编辑:支持ArkTS、JS、C/C等语言的代码高亮、…...
python学习 - 设计模式 - 组合模式
组合模式 Composite , 将对象组组合成树形结构以表示’部分-整体’ 的层次结构.组合模式使得用户对单个对象的组合对象的使用具有一致性 #!/usr/bin/python # -*- coding:UTF-8 -*- # File : d1.py # Software: PyCharm""" 组合模式 Composite , 将对象组组…...
JavaScript倒序遍历数组:计算年度累积值
在 JavaScript 开发中,我们经常需要对数组中的数据进行特定顺序的处理。倒序 for 循环是一种常见的技术,它可以从数组的末尾开始向前遍历元素。这种技术特别适用于需要基于前一个元素的值来计算当前元素的场景。 示例场景:计算年度累积值 假…...
华为仓颉编程语言观感
这里写自定义目录标题 相似点(主要与Swift进行对比)不同点亮点 花了半天时间,对华为新出的仓颉编程语言做了简单的了解,整体观感如下: 仓颉语言看起来是一门大而全的语言,吸纳了现存的很多中编程语言的范式…...
Elasticsearch:倒数排序融合 - Reciprocal rank fusion - 8.14
警告:此功能处于技术预览阶段,可能会在未来版本中更改或删除。语法可能会在正式发布之前发生变化。Elastic 将努力修复任何问题,但技术预览中的功能不受官方正式发布功能的支持 SLA 约束。 倒数排序融合 (reciprocal rank fusion - RRF) 是一…...
Day13—大语言模型
定义 大语言模型(Large Language Models)是一种基于深度学习的自然语言处理(NLP)模型,用于处理和生成人类语言文本。 一、认识NLP 什么是NLP NLP(Natural Language Processing)࿰…...
php基础语法_面向对象
PHP php代码标记 多种标记来区分php脚本 ASP标记:<% php代码 %> 短标记: 脚本标记: 标准标记(常用): 简写风格: ASP风格:<% php代码 %> 注意:简写风格和ASP风格…...
开源模型应用落地-LangChain高阶-LCEL-表达式语言(八)
一、前言 尽管现在的大语言模型已经非常强大,可以解决许多问题,但在处理复杂情况时,仍然需要进行多个步骤或整合不同的流程才能达到最终的目标。然而,现在可以利用langchain来使得模型的应用变得更加直接和简单。 LCEL是什么? LCEL是一种非常灵活和强大的语言,可以帮助您更…...
c# 协议数据计算陀螺仪的角度,带符号
subStrL str.Substring((76 - 8), 2); subStrH str.Substring((78 - 8), 2); Data[7] (short)(Convert.ToInt16(subStrH, 16) * 256 Convert.ToInt16(subStrL, 16));//角度X subStrL str.Substring((80 - 8), 2); subStrH str.Subst…...
ArcGIS arcpy代码工具——批量要素裁剪栅格影像
系列文章目录 ArcGIS arcpy代码工具——批量对MXD文件的页面布局设置修改 ArcGIS arcpy代码工具——数据驱动工具批量导出MXD文档并同步导出图片 ArcGIS arcpy代码工具——将要素属性表字段及要素截图插入word模板 ArcGIS arcpy代码工具——定制属性表字段输出表格 ArcGIS arc…...
宠物领养平台(10052)
有需要的同学,源代码和配套文档领取,加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码(前后端源代码SQL脚本)配套文档(LWPPT开题报告/任务书)远程调试控屏包运行一键启动项目&…...
均匀辐照度和局部遮光条件下光伏系统的新型样条-MPPT技术附Simulink仿真
✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、程序设计科研仿真。 🍎完整代码获取 定制创新 论文复现点击:Matlab科研工作室 👇 关注我领取海量matlab电子书和数学建模资料 &…...
基于瞬态三角哈里斯鹰算法TTHHO实现多无人机协同集群避障路径规划(目标函数:最低成本:路径、高度、威胁、转角)附Matlab代码
✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、程序设计科研仿真。 🍎完整代码获取 定制创新 论文复现点击:Matlab科研工作室 👇 关注我领取海量matlab电子书和数学建模资料 &…...
命令行媒体管理工具amem:本地化素材归档与自动化实践
1. 项目概述:一个被低估的本地化媒体管理工具最近在整理个人数字资产时,我遇到了一个老生常谈但又无比棘手的问题:如何高效、优雅地管理那些散落在硬盘各个角落的短视频、图片和音频文件?无论是手机拍摄的生活片段,还是…...
别再死记硬背了!图解贪心算法:用‘小船过河’和‘区间覆盖’带你掌握核心思想
贪心算法实战:从生活场景到代码实现的思维跃迁 想象一下周末野餐时分配三明治的场景:你有一堆大小不一的三明治和一群饥饿的朋友。为了让最多人吃到食物,你会优先把小块三明治分给食量小的朋友——这种看似简单的决策背后,隐藏着计…...
C#上位机与三菱PLC通信实战:从零构建GX Works3仿真平台
1. 为什么需要搭建GX Works3仿真平台 第一次接触三菱PLC开发的朋友们,可能都有这样的困惑:手头没有实体PLC设备,怎么测试自己写的控制程序?买一台FX5U PLC动辄几千元,对个人开发者来说成本太高。这时候仿真平台就成了最…...
Manus开源框架:高效探索与开发灵巧手抓取技能
1. 项目概述与核心价值最近在机器人抓取领域,一个名为“Manus Open Claw Skill Hunter and Developer”的项目引起了我的注意。这个项目由Simplio Labs开源,它不是一个具体的硬件爪子,也不是一个单一的算法,而是一个专门用于发现、…...
碳纤维板的导电特性
简 介: 碳纤维板导电性能测试表明,其表面有机膜被刺破后会呈现导电性,电阻值从十几欧姆到几百欧姆不等,且导电性能随测量点位置变化。测试中使用尖头万用表探针穿透表面薄膜,发现同一束碳纤维连接处电阻较低࿰…...
小学期第一周学习记录
这周自学了Multisim仿真软件,完成了555方波发生器二阶低通滤波器的搭建,成功实现了方波到正弦波的转换。学习过程1. 555方波发生器搭建参考课本公式 f ≈ 1.44 / ((R12R2)C1) 设计参数,一开始因为电容单位看错(把nF写成μF&…...
PostgreSQL 主从流复制完整部署指南:从零搭建到故障切换
文章目录每日一句正能量前言1.环境准备1.1 基础环境要求1.2 安装PostgreSQL2.1 修改PostgreSQL主配置文件2.2 修改客户端认证配置文件2.3 创建复制专用用户2.4 重启主库使配置生效2.5 备份主库数据(供从库初始化)3.从库配置3.1 停止从库PostgreSQL服务并…...
