数据结构--查找

数据结构--查找

image-20230713094616942

7.1 查找的概念

在哪里找?

---查找表

查找表是由同一类型的数据元素(或记录)构成的集合.由于"集合"中的数据元素之间存在着松散的关系,因此查找表是一种灵便的结构

image-20230713095046067

什么是查找?

-----根据给定的某个值,在查找表中确定一个关键字等于给定值的数据元素或(记录).

image-20230713095418975

查找是否成功?

若查找表中存在这样一个记录,则称为查找成功

否则查找不成功

image-20230713095634667

查找的目的是什么?

  1. 查询某个特定的数据元素是否在查找表中:

  2. 检索某个特定的数据元素的各种属性;

  3. 在查找表中插入一个数据元素;

  4. 删除查找表中的某个数据元素

    image-20230713100035957

    查找表的分类

    1. 静态查找表
    2. 动态查找表

    image-20230713100147306

如何评价查找算法?

关键字的平均比较次数,也称平均查找长度

image-20230713100418906

研究什么?

研究查找表的各种组织方法及其查找过程的实施过程

image-20230713100656591

顺序表的查找

1. 顺序查找(线性查找)

应用范围:

  1. 顺序表或线性链表表示的静态查找表
  2. 表内元素之间无序

image-20230714094733968

可以从前向后找或从后向前找

找到返回下标

算法实现

image-20230714095244707

算法的其他形式

image-20230714095609345

不需要进行两次查找的改进.

将待查关键字key存入表头(哨兵,监视哨);

监视哨放在查找表的0号元素

image-20230714100129547

设置监视哨的顺序查找

当ST.length较大时,这个改进可以使进行一次查找所需的平均时间几乎减少一半

image-20230714100335329

带哨兵的顺序查找的时间效率分析

比较次数与key位置有关:

  1. 查找第i个元素,需要比较n-i+1次

  2. 查找失败,需要比较n+1次

    image-20230714100825965

顺序查找的性能分析

image-20230714101039388

记录的查找概率不相等时如何提高查找效率.?

查找表储存记录原则---按查找概率从高到低存储;

记录的查找概率无法测定时如何提高查找效率?

方法--按查找概率动态调整记录顺序

image-20230714101544882

顺序查找的特点

image-20230714101705952

折半查找(二分或对分查找)

顺序查找的特点

image-20230714102922210

折半查找:每次将待查找记录区间缩小一半

image-20230714103859960

折半查找算法(非递归)

image-20230714104137164

算法7.3(非递归)

image-20230714104432970

算法7.3递归

image-20230714104607786

折半查找的性能分析

可以找到折半查找的判定树

圆形---内节点代表查找成功.

矩形--外节点代表查找不成功的情况

查找成功:

比较次数=路径上的节点树

比较次数=节点的层数

树的深度>=比较次数

查找不超过

比较次数=路径上的内部节点数

image-20230715094128630

假设每个元素的查找概率相等,求查找成功的平均长度

image-20230715094400246

平均查找长度ASL(成功时)

image-20230715094727788

折半查找优点:效率比顺序表高.

折半查找缺点:只适用于有序表,且限于顺序存储结构,(对线性链表无效).

image-20230715094942062

分块查找(索引顺序表的查找)

image-20230717095413295

条件:

  1. 将表分成几块,且表或者有序,或者分块有序.
  2. 建立"索引表".

查找过程:先确定待查记录所在块,再再块内查找.

image-20230717100036491

分块查找性能分析

时间效率位于二分查找和顺序查找之间

image-20230717100808907

分块查找的优点和缺点

image-20230717101000018

三种查找方法的比较

image-20230717101136411

posted @   harper886  阅读(79)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示