- 1、本文档共60页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第7章查找
数据结构》第七章查找共60页,您现在浏览的是第1页!
第7章查找
学习目的要求:
顺序表、有序表、索引顺序表的定义、查找及算法。
散列表的定义及构造法。
散列表冲突的处理方法。
数据结构》第七章查找共60页,您现在浏览的是第2页!
7.1基本概念
7.2顺序查找
7.5散列表及其查找
7.4分块查找
7.3二分法查找
第7章查找
数据结构》第七章查找共60页,您现在浏览的是第3页!
对查找表经常进行的操作:
1)查询(检索)某个“特定的”数据元素是否在查找表中及各种属性;
2)在查找表中插入一个数据元素;
3)从查找表中删去某个数据元素。
7.1基本概念
数据结构》第七章查找共60页,您现在浏览的是第4页!
顺序查找
二分查找
分块查找
静态查找表
7.1基本概念
数据结构》第七章查找共60页,您现在浏览的是第5页!
A
顺序表的查找过程:
假设给定值e=64,
要求A[k]=e,问:k=?
k
7.2顺序查找
数据结构》第七章查找共60页,您现在浏览的是第6页!
64
监视哨
比较次数:
查找第n个元素:1 (最好情况)
查找第n-1个元素:2
……….
查找第1个元素:n (最坏情况)
查找第i个元素:n+1-i
查找失败:n+1
本例比较次数:5
数据结构》第七章查找共60页,您现在浏览的是第7页!
7.3二分法查找
在顺序存储的条件下,若各记录是按其关键字值的大小依次存放的,则这个查找表称为有序表。
在有序表中可采用二分法查找(或称为折半查找)的方法进行查找。
假设表中元素为升序排列。
数据结构》第七章查找共60页,您现在浏览的是第8页!
查找的数据在表中
找到
数据结构》第七章查找共60页,您现在浏览的是第9页!
从二分法查找的执行情况分析,每做一次比较,查找的范围都缩小一半。因此二分法查找的平均查找长度为
ASL=log2(n+1)-1
当n足够大时,可近似表示为log2n。
优点:二分法查找比顺序查找的速度要快得多。当然,使用二分法查找必须是在顺序存储的条件下,且事先必须做到按关键字值排序才行。
7.3二分法查找
数据结构》第七章查找共60页,您现在浏览的是第10页!
7.4分块查找
分块查找又称索引顺序查找,它是顺序查找方法的一种改进方法,是介于顺序查找和二分法查找之间的一种折中查找方法。
基本思想是把线性表分成若干块,每块中最大的关键字存入索引表。块内数据元素任意排放,索引表内数据按从小到大的顺序排放。块内进行顺序查找,索引表中采用二分查找或顺序查找。
数据结构》第七章查找共60页,您现在浏览的是第11页!
7.4分块查找
索引表A的每个元素包含两个字段,一个是该块的最大关键字值,另一个是指向子表的指针。
数据结构》第七章查找共60页,您现在浏览的是第12页!
分块查找的平均查找长度由两个部分组成:
ASL=Eb+Ew
Eb为确定某一块所需的平均查找长度,Ew为在块内的平均查找长度。假设线性表中共有n个数据元素,平均分成b块,每块s个数据元素,并假设查找各块概率相等,若在索引表内和块内查找均用顺序查找方法,
则Ew=(s+1)/2,Eb=(b+1)/2,所以
ASL=Eb+Ew=(b+s)/2+1=(n/s+s)/2+1
当s=时,ASL取最小值,这时ASL=+1。
7.4分块查找
数据结构》第七章查找共60页,您现在浏览的是第13页!
练习
采用分块查找时,若线性表中共有625个元素,查找每个元素的概率相同,假设采用顺序查找来确定结点所在的块时,每块应分为多少个结点最佳。
【答案】
根据公式s=√n=√625=25,
每块应分为25个结点最佳。
数据结构》第七章查找共60页,您现在浏览的是第14页!
7.5散列表及其查找
7.5.1散列表的概念
散列法亦称哈希(HASH)法,是在记录的存储位置和它的关键字之间建立一个确定的对应关系H,使每个关键字与一个惟一的存储位置相对应。
散列方法不同于顺序查找、二分查找。它不以关键字的比较为基本操作,而采用直接寻址技术。在理想情况下,无须任何比较就可以找到待查关键字,查找的期望时间为O(1)。
数据结构》第七章查找共60页,您现在浏览的是第15页!
7.5散列表及其查找
U(全集):可能出现的关键字集合
K:实际存储的关键字集合
T:散列表
h:散列函数
h(ki):关键字为ki结点的存储地址,即散列值(散列地址)
将结点按照其关键字的散列地址存储到散列表中的过程就是散列
数据结构》第七章查找共60页,您现在浏览的是第16页!
文档评论(0)