【09】查找

1.查找的概述
(1)查找
查找又称为查询或检索,是在一批记录中依据一个给定的key值,找出相应记录的操作。
(2)查找表
由同一类型的数据元素(或记录)构成的集合。
(3)关键字
记录中某个数据项的值,可用来识别一个记录。
主关键字:可以唯一标识一个记录的关键字
次关键字:识别若干记录的关键字
(4)静态查找
若只对查找表进行:
查询:查询某个特定的数据元素是否在查找表中;
检索:检索某个特定元素的各种属性。
则称这类查找为静态查找。
只查找,不改变数据元素集合内的数据元素。
(5)动态查找
若在查找过程中将查找表中不存在的数据元素插入,或者从查找表中删除某个数据元素。则称这类查找为动态查找。既查找,又改变(增减)集合内的数据元素。

2.查找结构
      查找表是一种非常灵活的数据结构,对于不同的存储结构,其查找方法不同,效率也不同。
      为了提高查找速度,需要专门为查找操作设置数据结构,这种面向查找操作的数据结构称为查找结构。

(1)线性表:适用于静态查找,顺序查找技术、折半查找技术。
(2)树表: 适用于动态查找,二叉树的查找技术。
(3)散列表:静态查找和动态查找均适用,散列查找技术。

3.查找性能分析
查找算法的主要操作是关键字的比较,所以用比较次数的平均值来评估算法的优劣,称为平均查找长度ASL。
在这里插入图片描述
其中:
(1)n是查找记录的个数;
(2)Pi是查找第i个记录的查找概率(通常取等概率,即Pi =1/n);与算法无关,取决于应用规模。
(3)Ci是找到第i个记录时所经历的比较次数,与算法相关。

4.顺序查找
算法思想:
查找从表的一端开始,用给定数据元素的关键字逐个与顺序表中各数据元素的关键字比较,若在顺序表中查找到要查找的数据元素,则查找成功,函数返回该数据元素在顺序表中的位置;否则查找失败,函数返回-1。
顺序查找算法分析
在这里插入图片描述
顺序查找的特点
在这里插入图片描述

5.二分法查找
算法思想:
先给数据排序(例如按升序排好),形成有序表,然后再将key与正中元素相比,若key小,则缩小至前半部内查找;再取其中值比较,每次缩小1/2的范围,直到查找成功或失败为止。

二分法查找主要步骤
在这里插入图片描述
二分查找算法分析
在这里插入图片描述
在这里插入图片描述
虽然折半查找的效率较高,但它使用前提是有序表,并且必须是顺序存储,在数据集频繁执行插入和删除操作时,需要O(n)的时间来维护表的有序性,并且需要移动大量元素,因而二分查找一般仅限于静态查找。

6.二叉排序树
二叉排序树的定义
二叉排序树或者是空树,或者是具有以下性质的二叉树:
(1) 若左子树非空,则左子树上所有结点的值均小于它的根结点的值;
(2) 若右子树非空,则右子树上所有结点的值均大于它的根结点的值;
(3) 它的左、右子树也分别为二叉排序树。
二叉排序树
在这里插入图片描述
二叉排序树的构造
生成二叉排序树的过程是将一系列结点连续插入的过程。对于任意一组数据元素序列{R1,R2,…,Rn},生成一棵二叉排序树的过程为:
(1) 令R1为二叉树的根。
(2) 若R2<R1,则令R2为R1左子树的根结点,否则R2为R1右子树的根结点。若R2=R1,则不插入。
(3)R3,…,Rn结点的插入方法同上。
二叉排序树的查找
在这里插入图片描述
二叉排序树算法分析
n个结点的二叉排序树的平均查找长度和树的形态有关。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值