14.数据结构之多路查找树与堆

news2024/11/25 2:37:38

前言

之前介绍的都是二叉查找树,二叉树一个节点最多有两个子节点,那么多于两个节点是什么情况呢,这就是我们本节要介绍的多路查找树。

多路查找树,也是我们数据库mysql底层索引维护方式。下面,我们来详细介绍。

1. B 树

1.1 定义

1.1.1 多路查找树

多路查找树(muitl-way search tree),其每一个节点的孩子数可以多于两个,且每一个节点处可以存储多个元素。

1.1.2 B 树

B树(BalanceTree)是对二叉查找树的改进。它的设计思想是,将相关数据尽量集中在一起,以便一次读取多个数据,减少硬盘操作次数。
在这里插入图片描述

1.2 特征

一棵m阶的B 树 (m叉树)的特性如下:

  1. B树中所有节点的孩子节点数中的最大值称为B树的阶,记为M
  2. 树中的每个节点至多有M棵子树 —即:如果定了M,则这个B树中任何节点的子节点数量都不能超过M
  3. 若根节点不是终端节点,则至少有两棵子树
  4. 除根节点和叶节点外,所有点至少有m/2棵子树
  5. 所有的叶子结点都位于同一层

2. B+ 树

在这里插入图片描述

2.1 特征

B+树是B-树的变体,也是一种多路搜索树,其定义基本与B树相同,它的自身特征是:

  1. 非叶子结点的子树指针与关键字个数相同
  2. 非叶子结点的子树指针P[i],指向关键字值属于[K[i], K[i+1])的子树
  3. 为所有叶子结点增加一个链指针
  4. 所有关键字都在叶子结点出现

2.2 B和B+的区别

  1. B树和B+树的最大区别在于非叶子节点是否存储数据的问题。
  2. B树是非叶子节点和叶子节点都会存储数据。
  3. B+树只有叶子节点才会存储数据而且存储的数据都是在一行上,而且这些数据都是有指针指向的,也就是有顺序的。

2.3 应用

2.3.1 MySQL索引B+Tree

  1. B树是为了磁盘或其它存储设备而设计的一种多叉平衡查找树
  2. B树的高度一般都是在2-4这个高度,树的高度直接影响IO读写的次数
  3. 如果是三层树结构,支撑的数据可以达到20G;如果是四层树结构,支撑的数据可以达到几十T

3. 二叉堆

二叉堆本质上是一种完全二叉树,它分为两个类型

3.1 定义

3.1.1 大顶堆(最大堆)

最大堆的任何一个父节点的值,都大于或等于它左、右孩子节点的值。
在这里插入图片描述

3.1.2 小顶堆(最小堆)

最小堆的任何一个父节点的值,都小于或等于它左、右孩子节点的值。
在这里插入图片描述

3.2 存储原理

完全二叉树比较适合用数组来存储。用数组来存储完全二叉树是非常节省存储空间的。因为不需要存储左右子节点的指针,单纯地通过数组的下标,就可以找到一个节点的左右子节点和父节点。
在这里插入图片描述
如上图所示,数组中下标为 i 的节点的左子节点,就是下标为 i∗2 的节点,右子节点就是下标为 i∗2+1 的节点,父节点就是下标为 i/2 取整的节点。

3.3 二叉堆的典型应用

  1. 优先队列
  2. 利用堆求 Top K问题
    在一个包含 n 个数据的数组中,我们可以维护一个大小为 K 的小顶堆,顺序遍历数组,从数组中取出数据与堆顶元素比较。如果比堆顶元素大,我们就把堆顶元素删除,并且将这个元素插入到堆中;如果比堆顶元素小,则不做处理,继续遍历数组。这样等数组中的数据都遍历完之后,堆中的数据就是前 K 大数据了

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

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

相关文章

小红书母婴博主类型怎么选,类型区分

母婴类型的分享不管在哪个平台都是涨粉最快的,也可能是因为当前的大环境因素导致的。不过如果你想成为一名母婴博主或者想要借助它的影响,得先了解一些东西。那么小红书母婴博主类型怎么选,类型怎么区分。 小红书母婴博主是指聚集在小红书平台…

【数据结构】带你玩转排序:堆排序、希尔排序、插入排序、选择排序、冒泡排序、快排(多版本)、归并排序

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员,2024届电子信息研究生 目录 常见算法的实现 插入排序 希尔排序 堆排序 选择排序 冒泡排序 快速排序 Hoare版本 随机选Keyi 三数取中 挖坑法 前后指针版本 归并排序 常见算法的实现 插入排序 动画演示&…

信创提速,人才为先!麒麟信安与领路信创签订《人才合作协议》

5月23日,麒麟信安杨涛董事长一行考察了设立在长沙领路信创科技有限公司(简称:领路信创)的“国家新一代自主安全计算系统产业集群人才基地”(简称人才基地),并与领路信创刘耿董事长签署《人才合作…

苹果WWDC2023:首款MR头显震撼发布,开发者泪洒现场,一文读懂全新产品及创新功能

🌷 博主 libin9iOak带您 Go to New World.✨ 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发…

macOS Sonoma 发布,全面提升生产力和创意工作流(ISO、IPSW、PKG 下载)

macOS Sonoma 14.0 Beta 1 (23A5257q) ISO、IPSW、PKG 下载 本站下载的 macOS 软件包,既可以拖拽到 Applications(应用程序)下直接安装,也可以制作启动 U 盘安装,或者在虚拟机中启动安装。另外也支持在 Windows 和 Li…

chatgpt赋能python:Python如何删除行:从入门到精通

Python如何删除行:从入门到精通 在Python编程中,删除行是必不可少的操作之一。无论是清除不必要的数据,还是在数据集中删除重复行,或者在文本文件中删除某些行,删除行都是一项极其重要的任务。 什么是Python语言&…

shell文件读取

文件读取 一、whilefor shell中读取文件有两种方式 while 和 for while #!/bin/bash cat filename | while read line doetho $line donefor #!/bin/bash for line in cat filename(待读取的文件) doecho $line done第三中写法,上述两种方式的升级写法 #!/bin/bas…

SQL-约束

SQL-约束 1.1 概念 约束是作用于表中列上的规则,用于限制加入表的数据约束的存在保证了数据库中数据的正确性、有效性和完整性 1.2 分类 类型描述关键字非空约束保证列中所有的数据不能有null值NOT NULL唯一约束保证列中所有数据各不相同UNIQUE主键约束主键是一行…

HTTP首部(上)

HTTP 协议的请求和响应报文中必定包含 HTTP 首部,只是我们平时在使用 Web 的过程中感受不到它。本章我们一起来学习 HTTP 首部的结构,以及首部中各字段的用法。 1.HTTP报文首部 先来看看http报文的首部结构图: HTTP 协议的请求和响应报文中…

不知道如何搭建帮助中心?这里有解决办法!

在今天的数字化时代,帮助中心已经成为许多公司所必需的一个重要部分。它是一个客户与公司沟通和交互的重要渠道,可以帮助客户解决问题和获得支持。本文将介绍如何搭建一个有效的帮助中心,以提高客户满意度和公司的效率。 一、明确帮助中心的…

哪些因素对会影响到企业制定自己的融合CDN战略

我们知道一个企业/组织有多种方法可以实现和利用多CDN战略,由于带宽承诺、成本、超期费用等因素,因此对不同的指标进行评估至关重要。 以下是可能影响您的融合CDN战略的一些因素: 地理因素 在选择CDN时需要考虑的一个重要因素是用户所在的…

静态内存管理

内存管理的基本概念 在一般的实时嵌入式系统中,由于实时性的要求,很少使用虚拟内存机制。所有的内存都需要用户参与分配,直接操作物理内存,所分配的内存不能超过系统的物理内存,所有的系统堆栈的管理,都由…

快速上手kettle(三)壶中可以放些啥?

快速上手kettle(三)壶中可以放些啥? 序言一 、kettle这壶能装些啥二、Access输入2.1 准备Acess数据库和表2.2 新建一个转换并设置2.3 启动转换预览数据 三、CSV文件输入3.1 准备csv文件,并将csv输入控件拖入工作区3.2 csv输入控件…

JDBC 拾枝杂谈—入门篇(通俗易懂)

目录 一、前言 二、JDBC介绍 1.基本概述 : 2.基本原理 : 三、JDBC模拟 1.模拟接口 : 2.模拟实现类 : 3.模拟测试类 : 4.模拟扩展 : 四、JDBC入门 1.编写JDBC程序的核心四部曲 : (全文背诵) 2.准备工作 : ①导入jar包 ②创建测试表 …

Sys Tick【转】

STM32学习及应用笔记一:SysTick定时器学习及应用 - STM32/STM8技术论坛 - 电子技术论坛 - 广受欢迎的专业电子论坛! (elecfans.com) 1、SysTick究竟是什么? 关于SysTick在STM32的资料中并没有详细的介绍,这可能由于SysTick是ARM内核的东西。在…

在用对讲机中竟有近5成属于违规使用?

目前对讲机在很多领域和场景中都有着广泛的应用,包括建筑工地、宾馆饭店、住宅小区、大型商场超市、安保活动、物业管理等。 不过据非官方数据统计,在用对讲机中竟有近5成属于违规使用,这严重干扰了城市上空的无线电波秩序。 根据近年来无线…

多行 SQL 格式化换行调整(数据清洗、数据迁移)

多行 SQL 格式化换行调整(数据清洗、数据迁移) 原数据数据如下: select * from user_info;select * from user_info; select * from user_info;INSERT INTO student VALUES (107, zhao, NULL, 3, 北京); select * from user_info;INSERT INT…

哪个骨传导蓝牙耳机的好,几款高性能的骨传导蓝牙耳机分享清单

骨传导耳机是目前在运动领域最火热的产品,也是最适合运动的耳机,它的原理是通过颅骨将声音转化为神经冲动,通过内耳传至听觉中枢,因此不会对耳朵造成任何损伤,它同时也可以让耳朵更好地听到周围的声音。能够很好的提高…

hbuilderx+uniapp基于安卓的古汉语学习考试系统 微信小程序

在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括古汉语学习软件APP的网络应用,在外国学习软件已经是很普遍的方式,不过国内的古汉语学习软件可能还处于起步阶段。古汉语学习软件具有古汉语、学习视频等…