《数据结构》--第七章 查找

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

01 64 5
23456 13 19 21 37 56
找64 7 8 9 10 11 64 75 80 88 92
监视哨
比较次数:
查找第n个元素: 1
查找第n-1个元素:2
……….
查找第1个元素: n
查找第i个元素: n+1-i
查找失败:
n+1
iiiii
(最好情况)
本例比 较次数:
5
(最坏情况)
7.2 顺序查找
• 关键字(Key)是数据元素(或记录)中某个数据项 的值,用它可以标识(识别)一个数据元素(或记录)。
• 若此关键字可以惟一地标识一个记录,则称此关键字 为主关键字(Primary Key)。
• 查找(搜索):给定一个值,在查找表中确定是否存 在一个数据元素(或记录),其关键字等于给定的值。
7.1 基本概念
7.2 顺序查找
顺序表的查找过程:
k
k
A
21 37 88 19 92 05 64 56 80 75 13
0 1 2 3 4 5 6 7 8 9 10 11
假设给定值 e=64, 要求 A[k] = e, 问: k = ?
7.2 顺序查找
顺序查找的查找过程为:从表中最后一个 记录开始,逐个地将记录的关键字值和给定值的 比较,若某个数据元素的关键字值和给定值相等, 则查找成功,找到所查记录;反之,若一直找到 第一个,其关键字值和给定值都不相等,则表明 数组中没有所查元素,查找不成功。
成功查找的平均查找长度为(n+1)/2。显然不成功 查找次数为n+1,其时间复杂度均为 O(n)。
顺序查找的优点是:算法简单且适用面广,它对表的 结构无任何要求。无论记录是否按关键字的大小有序,其 算法均可应用,而且上述讨论对线性链表也同样适用。
顺序查找的缺点是:查找效率低,当 n 较大时,不 宜采用顺序查找。
对查找表经常进行的操作: 1)查询(检索)某个“特定的”数据元
素是否在查找表中及各种属性; 2)在查找表中插入一个数据元素; 3)从查找表中删去某个数据元素。
7.1 基本概念
查找表可分为两类: 静态查找表
仅作查询和检索操作的查找表。
动态查找表 有时还需将“查询”结果为“不在查找表中”的 数据元素插入到表中;或者,从查找表中删除其 “查询”结果为“在查找表中”的数据元素。

5 13 19 21 37 56 64 75 80 88 92
low>high 查找失败
123456
low high
mid 7 8 9 10 11
5 13 19 21 37 56 64 75 80 88 92
high low
7.3 二分法查找
从二分法查找的执行情况分析,每做一次比较,查找的 范围都缩小一半。因此二分法查找的平均查找长度为
7.1 基本概念
静态查找表 •顺序查找 •二分查找 •分块查找
7.2 顺序查找
顺序查找(Sequential Search)也称为线 性查找。
基本思想:用给定的值与表中各个记录的关 键字值逐个进行比较,若找到相等的则查找成功, 否则查找不成功,给出找不到的提示信息。
这种查找方法对顺序存储和链式存储都是适 用的。
2、已知如下11个数据元素的有序表(6,14,19, 21,36,57,63,76,81,89,93),请画出 查找键值为21和85的查找过程。
7.4 分块查找
分块查找又称索引顺序查找,它是顺序查找方法 的一种改进方法,是介于顺序查找和二分法查找之间 的一种折中查找方法。
基本思想是把线性表分成若干块,每块中wk.baidu.com大的 关键字存入索引表。块内数据元素任意排放,索引表 内数据按从小到大的顺序排放。块内进行顺序查找, 索引表中采用二分查找或顺序查找。
第7章 查 找
第7章 查 找
学习目的要求:
1. 顺序表、有序表、索引顺序表的定义、查找 及算法。
2. 散列表的定义及构造法。 3. 散列表冲突的处理方法。
第7章 查 找
7.1 基本概念 7.2 顺序查找 7.3 二分法查找 7.4 分块查找 7.5 散列表及其查找
7.1 基本概念
• 查找表(Search Table)是由同一类型的数据元素 (或记录)构成的集合。
7.3 二分法查找
在顺序存储的条件下,若各记录是按其关键字 值的大小依次存放的,则这个查找表称为有序表。
在有序表中可采用二分法查找(或称为折半查 找)的方法进行查找。
假设表中元素为升序排列。
7.3 二分法查找
基本思想:取表的中间记录的关键字值与给定 关键字的值相比较,如果给定值比该记录的关键字 值大,则要查找的记录一定在表的后半部分;若给定 值比该记录的关键字值小,则要查找的记录一定在 表的前半部分。
1 2 3 4 5 6 7 8 9 10 11

5 13 19 21 37 56 64 75 80 88 92


low
mid
high

1 2 3 4 5 6 7 8 9 10 11

5 13 19 21 37 56 64 75 80 88 92


lowmid high 1 2 3 4 5 6 7 8 9 10 11


low
mid
high

1 2 3 4 5 6 7 8 9 10 11
5 13 19 21 37 56 64 75 80 88 92
low high mid
找到
找70
1 2 3 4 5 6 7 8 9 10 11 5 13 19 21 37 56 64 75 80 88 92

low
mid
high
ASL= log2(n+1) - 1 当n足够大时,可近似表示为 log2n。 优点:二分法查找比顺序查找的速度要快得多。当然, 使用二分法查找必须是在顺序存储的条件下,且事先必须做 到按关键字值排序才行。
练习
1、若有一个由17个元素组成的有序表,利用二分 法查找方法查找有序表的元素,问查找成功时, 最少比较几次?最多比较几次? 【答案】 查找成功时,最少比较1次,最多比较5次。
依次反复进行,在最坏的情况下,当表长缩小 为1时必然能找到;否则就表明找不到要查找的记录。
找21
1 2 3 4 5 6 7 8 9 10 11

5 13 19 21 37 56 64 75 80 88 92


low
mid
high

1 2 3 4 5 6 7 8 9 10 11

5 13 19 21 37 56 64 75 80 88 92
相关文档
最新文档