学习地址:【数据结构与算法基础-java版】 🚀数据结构--Java专栏🚀
- 笔记01【01-09】【概述、数组基本使用】【源码、课件】
- 笔记02【10-18】【栈、队列、单链表(增删节点)、循环链表、双向循环链表、递归(斐波那契、汉诺塔)】
- 笔记03【19-27】【(时间、空间复杂度);八大排序(冒泡、快速、插入、希尔、选择、归并、基数、队列基数)】
- 笔记04【28-33】【树结构(二叉树)概述、创建、遍历、查找节点、删除节点】
- 笔记05【34-39】【顺序存储二叉树概述、二叉树遍历、堆排序、线索二叉树实现及遍历】
- 笔记06【40-48】【赫夫曼树、概述、原理分析、代码实现(数据压缩、创建编码表、解码、压缩文件、解压文件)】
- 笔记07【49-54】【二叉排序树(添加、查找、删除节点)】
- 笔记08【55-57】【二叉平衡树(AVL)-概述、单旋转、双旋转】
- 笔记09【58-60】【计算机中数据的存储原理、2-3树的插入原理、B树和B+树】
- 笔记10【61-63】【哈希表概述、散列函数的设计、散列冲突解决方案】
- 笔记11【64-67】【图结构概述、图遍历原理(BFS\DFS)、图遍历代码实现】
目 录
P58 4.31 计算机中数据的存储原理
树的数据结构,主要应用场景:内存(数据量少!)。
数据量大,不能直接存在内存中 --> 存储到硬盘中。
硬盘:机械硬盘、固态硬盘。
机械硬盘的存储介质:磁盘。
读取速度:内存 > 固态硬盘 > 机械硬盘
磁盘固定于主轴之上;一个主轴上,可以固定几个磁盘。磁盘上下分为两面。
磁盘的盘面,分为一圈圈;每一圈 称为 磁道。使用间隔(gap)可以将磁道分为若干个扇区(sector)。
数据存储在扇区中。
硬盘读取磁盘数据:传动臂顶上的磁头 在磁盘上 读取数据。
传动臂可以进行一定的摆动,磁盘进行转动。磁盘转动速度:7200转/min、5400转/min。
磁盘的转动集合传动臂的摆动,可以读取磁盘盘面上的任何一个扇区的内容。
二叉树:每个节点存储一个值。数据量大,树的高度会非常高。
节点数多,导致I/O操作多,速度慢!
==>
将节点进行拓展。(根节点:3个值;子节点:7个值。只有5个节点,最多2次I/O操作。)
P59 4.32 2-3树的插入原理
1、2-3树
2-3树是最简单的B-树(或-树)结构,其每个非叶节点都有两个或三个子女,而且所有叶都在统一层上。2-3树不是二叉树,其节点可拥有3个孩子。不过,2-3树与满二叉树相似。高为h的2-3树包含的节点数大于等于高度为h的满二叉树的节点数,即至少有2^h-1个节点。
2、详细案例求解过程
2-3树(B树特例):对节点进行拓展。
2-3树(3阶B树):每放入一个数,都要保证是B树!!!【把 三节点 拆分为 两个 二节点。】【下面放不下的,往上放。】
中序遍历---有序集合
P60 4.33 B树和B+树原理
2-3-4树(4阶B树)
B+树:B树的变形,可以 通过 索引信息 快速地 找到 想要的数据。
MySQL数据库(2种引擎:B树、B+树)