夜合蠲忿,萱草忘忧.|

蠲忿恚葉言

园龄:2年3个月粉丝:2关注:3

数据结构基础第7讲

数据结构基础第7讲 查找

img

考点一:查找的基本概念

1.概念

  1. 静态查找

    img

  2. 动态查找

    img

  3. 分类

    img

2.查找性能计算

  1. 平均查找长度:

    img

考点二:顺序查找

1.顺序查找

img

2.优劣

img

考点三:折半查找(二分搜索)

1.概念

img

2.过程

img

img

img

3.构建为判定树

  1. 构建
    img

    img

    向上取整:左少右多向右偏

    向下取整:左多右少向做左偏

    img

  2. 结论

    查找比较次数=层次高度

    查找路径是一条从根到该点的参次路径,该路径有且仅有一条

    img

  3. 查找成功平均比较次数

    查找成功平均比较次数:拿层高乘以每层结点个数累加再除以元素个数

    img

  4. 查找不成功平均比较次数

    img

顺序查找及折半查找均为静态查找手段

考点四:二叉排序树

1.二叉排序树定义

注意:二叉排序树中没有相同关键字的结点

img

2.二叉排序树的查找

查找过程:

查找过程永远是一条层次路径的形态
img

3.二叉排序树的插入

插入过程:

img

img

4.二叉排序树的删除

img

4种情形:

img

  1. 删除叶子

    img

  2. 删除结点只有右子树

    img

  3. 被删除的结点只有左子树

    img

    img

  4. 被删除同时具有左右子树

    用中序直接前驱或中序直接后继代替

    img

    img

  5. 二叉排序树的构造

    img

    依次作为叶子结点插入

    元素相同顺序不同,构成的二叉排序树也不同

    img

    img

6.二叉排序树的性能分析

相同结点,树形结构不同,也会导致平均比较次数不同

img

img

img

img

考点五:平衡二叉树

1.平衡二叉树概念

  1. AVL树引入

    img

  2. 平衡因子

    img

  3. 最小不平衡子树

    以距离插入结点最近的,且失衡的结点为根的子树

    img

2.平衡二叉树的旋转及实现

  1. 导致不平衡原因

    插入与删除可能导致失衡

    1. 插入结点:

      插入只会改变它所在层次路径的平衡因子

      img

    2. 删除结点:

      删除可能会改变父亲所在层次路径的平衡因子

      img

    插入看自己,删除看兄弟(父亲)

    删除改变的一定是兄弟子树因此从兄弟往上找

  2. 不平衡的4种情况

    img

  3. 不平衡情况判断

    插入:

    从自己开始向上查找,找到不平衡那个点,以那个点的层次路径即为最小不平衡子树

    img

    删除:

    从兄弟向上去找,找到第一个不平衡点;

    从该点开始画层次路径,层次路径可能有多个;

    当层次路径高相同时都可以,不同时谁高看谁

    img

  4. 如何调整

    全把落单的当叶子结点重新插进去

    以最小不平衡子树根节点开始,向下子节点位置命名

    1. LL

      落单的拿出来,剩下的按平衡二叉树规则变形。

      重新把R当叶子结点插入回去

      R比10大比11小,插入11左边

      img

    2. LR

      先把10放到中间构成LL

      接着掰弯

      img

      当有左右子树时

      把L,R落单,剩余按平衡二叉树规则处理。

      再把L,R当作叶子结点插回去

      L比9大比10小,插入到9左边

      R比10大比11小,插入到11右边

      img

    3. RR

      img

      10有左子树

      L比10小,比9大,插入到9左边

      img

    4. RL

      img

      有L,R情况

      L比9大,比10小,放9左边

      R比10大,比11小,放11右边

      img

考点七:索引查找

1.B-树的定义和性质

用关键字分割子树

  1. 索引查找引入
    img

  2. B树的定义
    img
    img
    img
    img
    img
    img

性质总结:

img

2.B-树的查找

  1. 查找过程

    img

    img
    img

  2. B-插入

    img

  3. B-删除

    m为B树阶数

    img

    1. 删除非叶子中的key
      img

      任意非叶子都有左子树

      用中序直接前驱或中序直接后继代替之。

      即用左子树最大值或右子树最小值代替。

      删除看下界

      img

      不够找兄弟借,借左兄弟最大值,或右兄弟最小值,把父亲拽下来把兄弟升上去。

      img

      都不够
      将自己父亲左兄弟合并,或自己有兄弟合并

      img

      img

    总结:

    img

    ex:

    img

    img

3.B+树的定义与性质

用关键字引导子树

img

考点八:散列查找

1.散列查找的基本思想

img

img

  1. 设计散列函数

    img

    1. 直接地址法
      img

    2. 平方取中法

      img

    3. )除留余数法

      img

2.处理哈希冲突

  1. 开放定址法

    凡是空白空间均可使用。

    线性探查法:

    计算成功/失败的平均查找次数

    img

    失败标志,从算出哈希位置向后找到空

    img

  2. 二次探查法

    左右横跳,越跳越长

    img

  3. 拉链法

    将余数相同的所有元素放入单链表中

    img

    成功查找平均次数:

    img

    失败查找平均次数:

    img

  4. 装填因子

    img

  5. 复杂度

    img

本文作者:蠲忿恚葉言

本文链接:https://www.cnblogs.com/JUANFENHUI/p/18326908

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   蠲忿恚葉言  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起