IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 《数据结构》:07查找 -> 正文阅读

[数据结构与算法]《数据结构》:07查找

查找的基本概念

查找: 在数据集合中寻找满?某种条件的数据元素的过程称为查找 。查找结果只有两种:成功/失败。

查找表(查找结构): 用于查找的数据集合称为查找表,它由同?类型的数据元素(或记录)组成,可以是一个数组或链表等数据类型。查找表的常见操作:①查找符合体条件的数据元素,②插入、删除某个数据元素。

静态查找表: 若一个查找表的操作不涉及到插入、删除操作,则无须动态地修改查找表。此类查找表称为静态查找表,反之为动态查找表

关键字: 数据元素中唯?标识该元素的某个数据项的值,使?基于关键字的查找,查找结果应该是唯?的。

查找长度: 在查找运算中,需要对?关键字的次数称为查找长度。

平均查找长度(ASL, Average Search Length): 所有查找过程中进?关键字的?较次数的平均值。

在这里插入图片描述

适合静态查找表的查找方法:顺序查找、折半查找、散列查找等;
适合动态查找表的查找方法:二叉树排序树的查找、散列查找等。二叉平衡树和B树都是二叉排序树的改进。

顺序查找和折半查找

顺序查找

顺序查找,?叫 “线性查找”,通常?于线性表。

算法思想:从头到尾挨个找(或者反过来也OK)

在这里插入图片描述

在这里插入图片描述

**设立哨兵查找方式:**设置第一位置尾哨兵,从尾端往头部开始依次查找。查找成功,则返回元素下标;查找失败,则返回 0。

在这里插入图片描述

在这里插入图片描述

**有序表的顺序查找:**若在查找之前就已经知道表的关键字有序的,则查找失败时可以不用再比较到表的另一端就能返回查找失败的信息,从而降低顺序查找失败的平均查找长度。

在这里插入图片描述

折半查找

折半查找,?称 “?分查找”,仅适?于有序的顺序表。

在这里插入图片描述

在这里插入图片描述

分块查找

分块查找又称索引顺序查找,它吸取了顺序查找和折半查找各自的优点,既有动态结构,又适于快速查找。

在这里插入图片描述

B树和B+树

B树的基本概念

B树,?称多路平衡查找树,B树中所有结点的孩?个数的最大值称为B树的阶,通常?m表示。?棵m阶B树
或为空树,或为满?如下特性的m叉树:

  1. 树中每个结点?多有m棵?树,即?多含有m-1个关键字。
  2. 若根结点不是终端结点,则?少有两棵?树。
  3. 除根结点外的所有?叶结点?少有 棵?树,即?少含有 -1个关键字。
  4. 所有?叶结点的结构如下:
    在这里插入图片描述
  5. 所有的叶结点都出现在同?层次上,并且不带信息(可以视为外部结点或类似于折半查找判定树的查找失
    败结点,实际上这些结点不存在,指向这些结点的指针为空)。

在这里插入图片描述

m阶B树的核心特性:

  1. 根节点的?树数∈[2, m],关键字数∈[1, m-1]。 其他结点的?树数∈[ , m];关键字数∈[ -1, m-1]
  2. 对任?结点,其所有?树?度都相同
  3. 关键字的值:?树0<关键字1<?树1<关键字2<?树2<…. (类比?叉查找树 左<中<右)

B+树的高度

**最小高度:**让每个结点尽可能的满,有m-1个关键字,m个分叉,则有 n≤(m ? 1)(1 + m + m2 + m3 + . . . + mh?1) = mh ? 1, 因此 h ≥ logm(n + 1)

**最大高度:**让各层的分叉尽可能的少,即根节点只有2个分叉,其他结点只有[m/2]个分叉

各层结点?少有:第?层 1、第?层 2、第三层 2 … 第h层 2(?m/2?)h?2

第h+1层共有叶子结点(失败结点)2(?m/2?)h?1?

B+树的基本概念

?棵m阶的B+树需满?下列条件:

  1. 每个分?结点最多有m棵?树(孩?结点)。
  2. 非叶根结点?少有两棵?树,其他每个分?结点?少有 棵?树。
  3. 结点的?树个数与关键字个数相等。
  4. 所有叶结点包含全部关键字及指向相应记录的指针,叶结点中将关键字按大小顺序排列,并且相邻叶结点按大小顺序相互链接起来。
  5. 所有分?结点中仅包含它的各个子结点中关键字的最大值及指向其?结点的指针。

在这里插入图片描述

m阶的B+树与m阶的B树的主要差异如下:

  1. 在B+树中,具有n个关键字的结点只含有n棵子树,即每个关键字对应一棵子树;而在B树中,具有n个关键字的结点含有n+1棵子树。
  2. 在B+树中,每个结点(非根内部结点)的关键字个数n的范围是[m/27<n≤m(根结点:1<n<m);在B树中,每个结点(非根内部结点)的关键字个数n的范围是1m/2-1<ns m-1(根结点:1<n<m-1)。
  3. 在B+树中,叶结点包含信息,所有非叶结点仅起索引作用,非叶结点中的每个索引项只含有对应子树的最大关键字和指向该子树的指针,不含有该关键字对应记录的存储地址。
  4. 在B+树中,叶结点包含了全部关键字,即在非叶结点中出现的关键字也会出现在叶结点中;而在B树中,叶结点包含的关键字和其他结点包含的关键字是不重复的。
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-08-31 15:42:15  更:2021-08-31 15:43:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 0:25:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码