数据结构与算法基础(七)查找

本文深入讲解查找算法的基础知识,包括顺序查找、折半查找及分块查找等线性表查找方法,探讨二叉排序树、平衡二叉树等树表查找技术,并介绍散列表的构造与冲突解决策略。

数据结构与算法基础(七)查找


在这里插入图片描述
在这里插入图片描述

一、查找的基本概念

在那里查找? 什么查找?查找是否成功?查找目的?查找分类?评价查找算法?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

二、线性表的查找

1.顺序查找

1.1应用范围

  • 顺序表、线性链表 表示的静态查找表
  • 元素无序

1.2 数据表的数据元素类型定义

在这里插入图片描述

1.3查找值为key的数据元素

在这里插入图片描述
在这里插入图片描述
改进:增加监视哨,就不用判断越界了
在这里插入图片描述
在这里插入图片描述
监视哨:将关键字放入0号位置,从后向前查找
在这里插入图片描述
在这里插入图片描述
时间效率:在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.折半查找(对分查找)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
return search bin(st.key,low,mid-1);

2.1 判定树

在这里插入图片描述

2.2 平均查找长度

在这里插入图片描述
在这里插入图片描述

2.3 折半查找性能分析

在这里插入图片描述

折半查找 的效率--对数级 O(lg n)

3.分块查找

3.1 (索引查找)

在这里插入图片描述

3.2 查找效率

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3.3 性能分析

在这里插入图片描述
在这里插入图片描述

三、树表的查找

动态的查找表—几种特殊的树
在这里插入图片描述

1. 二叉排序树

1.1 二叉排序树的定义

在这里插入图片描述
在这里插入图片描述
递归的定义
在这里插入图片描述
注意定义:
必须是根结点的左子树 里的***所有***结点值都小于根结点值;
根结点的右子树 里的***所有***结点值都大于根结点
在这里插入图片描述

1.2 性质

中序 LDR 左根右
在这里插入图片描述
二叉排序树的性质:中序遍历非空的二叉排序树所得到的数据元素序列是一个按关键字排列的递增有序序列

1.3 查找

在这里插入图片描述

1.3.1 二叉排序树的存储结构

在这里插入图片描述

1.3.2 查找算法

在这里插入图片描述
在这里插入图片描述

1.3.3 平均查找长度

查找次数和 结点位置有关
查找过程其实就是走了一条从根到该结点的路径
比较的次数=此时结点所在层数
最多的比较次数=树的深度
在这里插入图片描述

在这里插入图片描述
平均查找长度 和 树的高度有关,越高,越长
在这里插入图片描述
在这里插入图片描述

1.4 插入

在这里插入图片描述
在这里插入图片描述

1.5 生成

在这里插入图片描述

1.无序-->有序
2. 插入的结点均为叶子结点,无需移动其他结点
3. 关键字的输入顺序不同,建立的不同二叉排序树

在这里插入图片描述

1.6 删除

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
用右子树的最小值替换要删除的结点
删除78,用81替换78,88替换81
在这里插入图片描述

2.平衡二叉树

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
所有结点 平衡因子都

2.1 调整

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
把大小 处于中间的放在根结点上

2.1.1 LL型

在这里插入图片描述
在这里插入图片描述

2.1.2 RR型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.1.3 LR型

在这里插入图片描述
BC在A的左子树,都比A小
C>B
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

为LR失衡

2.1.4 RL型

在这里插入图片描述
A最小
C<B
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2 例题

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、散列表的查找

1. 基本概念

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. 术语

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. 散列函数的构造方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.1 直接定址法

在这里插入图片描述

3.2 除留余数法

在这里插入图片描述

4. 解决冲突

-开放地址法

在这里插入图片描述
在这里插入图片描述

4.1 线性探测法

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

4.2 二次探测法

在这里插入图片描述

4.3 伪随机探测法

在这里插入图片描述

-链地址法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5. 散列表的查找

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值