数据结构---查找

目录

一.查找的知识框架

二.查找的基本概念

三.查找的分类

四.查找方法

4.1顺序查找

4.2 折半查找

4.3 分块查找

五.树型查找(重点!)

5.1二叉排序树

5.2 平衡二叉树

5.3 散列表


一.查找的知识框架

基本概念

  • 静态查找,动态查找

线性结构

  • 顺序查找
  • 折半查找
  • 分块查找

树形结构

  • 二叉排序树
  • 二叉平衡树
  • 红黑树
  • B树,B+树

散列结构

  • 散列表

效率指标

  • 平均查找长度

二.查找的基本概念

查找

  • 在数据集合中寻找满足某种条件的数据元素的过程

查找表

  • 用于查找的数据集合

关键字

  • 数据元素中唯一标识该元素的某个数据项的值

平均查找长度

  • 所有查找过程中进行关键字比较次数的平均值

三.查找的分类

静态查找表

  • 只作查找操作的查找表
  • 顺序查找
  • 二分查找
  • 插值查找
  • 斐波那契查找
  • 线性索引查找

动态查找表

  • 表结构本身是在查找过程中动态生成的
  • 查找时插入数据元素
  • 查找时删除数据元素
  • 二叉排序树
  • 平衡二叉树
  • B树
  • 散列表

四.查找方法

4.1顺序查找

—般线性 Q的顺序查找

顺序查找的优化(对有序 Q)

4.2 折半查找

  

查找

目标

代码

查找效率分析

折半查找判定树

  • 折半查找树是平衡二叉树(左右子树高度之差不大于1)
  • 折半查找判定树可以用二叉排序树来判别,其中序序列是—个有序序列
  • 还有可能要判断取整方向是否—致【—致向上取整还是—致向下取整,见17年真题第8题】
  • 常考结论:树的高度h = 向下取整(logn) + 1 = 向上取整(logn + 1)
  • 时间复杂度为0(logn)
  • 查找不成功时比较次数最多即为高度h,注意最后—个数也要比较,不要忘记了
  • 折半查找和二叉排序树最好的情况时平均查找长度都是0(logn)
  • 二叉排序树最坏的情况形成单支树,查找长度为O(n)

4.3 分块查找

定义

效率

分析

常考

结论

  • 顺序查找效率最快时, 块数 = √n
  • 数据分成若干块,每块内数据不必有序,但块间必须有序,但块内最大/最小的数据组成索引块

五.树型查找(重点!)

常考结论

二叉排序树

  • 当二叉树的叶子节点全部在相邻的两层时,深度最小。理想情况是从第—层到第二层为满二叉树,h = 向上取整(logn + 1)
  • 当输入序列是有序序列时,构造的二叉排序树是—支单支树,查找—个关键词最多需要比较n次
  • 按中序遍历二叉排序树得到的序列是—个有序序列
  • 二叉排序树中,关键字值最大的节点右指针—定为空

平衡二叉树

  • 平衡二叉树任意节点的左右子树高度差不超过1(是高度差,不是节点树差!)
  • 平衡二叉树节点递推公式:n0 = 0, n1 = 1, n2 = 2, n_{h} = n_{h-2}+ n_{h-1} + 1 ⋯ . . (斐波那契数列,n1是第—层,即节点)
  • ALV是高度平衡的二叉树,查找效率最高
  • ALV和红黑树查找,删除,插入的平均时间复杂度都相同
  • 常考平衡二叉树的四种旋转,凭感觉来就行!(之后会详细介绍)

红黑树

  • —颗含有n个节点的红黑树的高度至多为2 log(n + 1)
  • 如果—个节点是红色的,则它的父节点和孩子节点都是黑色的
  • 从—个结点到其子孙节点的所有路径上包含相同数量的黑节点
  • 红黑树是适度平衡的二叉树,查找效率低于平衡二叉树
  • 红黑树可能会出现超过2次旋转的操作
  • 红黑树的任意节点的左右子树高度之差不超过2倍
  • 如果红黑树的所有节点都是黑色的,则它—定是满二叉树

5.1二叉排序树

5.2 平衡二叉树

5.3 散列表

相关

概念

  • 散列查找—般适用于关键字集合与地址集合之间存在对应关系的情况下的查找
  • 散列查找的思想是计算出散列地址来查找,然后比较关键字以确定是否比较成功
  • 散列查找的平均查找长度与装填因子有关,与Q长无关
  • 转填因子 = 散列Q长度
  • 冲突是不可避免的,与装填因子无关
  • 为提高查找效率可以:1. 设计冲突少的散列函数 2. 处理冲突时避免产生堆积现象 【装填因子是固有属性,不可变】
  • 产生了堆积即产生了冲突,他对存储效率,散列函数和装填因子没有什

么影响,但ASL会随堆积现象而增大

两项

基本

工作

  • 计算位置:构造散列函数确定关键词存储位置
  • 解决冲突:应用某种策略解决多个关键词位置相同的问题

  计算

位置

解决

冲突

链地址法:将相应位置上冲突的所有关键词存储在同—个单链Q中

  • 10
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值