- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第十章查找.ppt.ppt
第10章 查找;本章主要知识点:
查找的基本概念和衡量查找算法效率的标准
静态查找表,主要包括顺序查找方法和索引顺序方法
动态查找表,主要包括二叉排序树和B_树;10.1 查找的基本概念; 查找可分为静态查找和动态查找 :
静态查找是指只在数据元素集合中查找是否存在某个给定的数据元素。
动态查找除包括静态查找的要求外,还包括在查找过程中同时插入数据元素集合中不存在的数据元素,或者从数据元素集合中删除已存在的某个数据元素的要求。
衡量查找算法效率的最主要标准是平均查找长度。
平均查找长度是指查找过程所需进行的比较次数的平均值。 数学定义为:
;10.2 静态查找;在无序序列中查找某个数据元素是否存在的函数设计如下 :
public static int seqSeach(int[] a, int elem){
//在数组a中顺序查找数据元素elem是否存在。查找成功返回该元素的下标;失败返回-1
int n = a.length;
int i = 0;
while(i n a[i] != elem) i++;
if(a[i] == elem) return i;
else return -1;
}; 设要查找的数据元素在数据元素集合中出现的概率均相等,则该算法查找成功时的平均查找长度ASL成功为:
算法查找失败时的平均查找长度ASL失败为:
;10.2.2 在有序序列中查找
1 顺序查找
有序数组中的顺序查找函数如下:
public static int orderSeqSearch(int[] a, int elem){
int n = a.length;
int i = 0;
while(i n a[i] elem) i ++;
if(a[i] == elem) return i;
else return -1;
}; 设要查找的数据元素在数据元素集合中出现的概率均相等,则有序序列的顺序查找算法查找成功时的平均查找长度ASL成功为:
查找失败时的平均查找长度ASL失败为:
;2 二分查找
有序序列的二分查找算法的基本思想是:
在一个查找区间中,确定出查找区间的中心下标,用待查找数据元素和中心下标上的数据元素比较,若两者相等则查找成功;否则若前者小于后者则把查找区间定为原查找区间的前半段继续这样的过程;若前者大于后者则把查找区间定为原查找区间的后半段继续这样的过程。 ;二分查找算法 :
public static int biSeach(int[] a, int elem){
int n = a.length;
int low = 0, high = n - 1, mid;
while(low = high){
mid = (low + high)/2;
if(a[mid] == elem) return mid;
else if(a[mid] elem) low = mid + 1;
else high = mid - 1;
}
return -1;
}; 当每个数据元素的查找概率相等时,二分查找算法查找成功时的平均查找长度为:
二分查找算法查找失败时的平均查找长度为;
;10.2.3 索引
把要在其上建立索引的数据元素序列(通常采用数组 保存)称作主表。
主表中存放着数据元素的全部信息。
索引中只保存主表中要查找数据元素的关键字和索引信息。
下页图是一个主表和一个按关键字key建立的索引的结构图。 ; 把和主表项完全相同,但只包含索引关键字和该数据元素在主表中位置信息的索引称作主表的完全索引表。
下图为带完全索引表的索引表结构图 :
; 等长索引是指索引中的每个索引项对应主表中的数据元素个数是相等的。
索引中的索引项对应主表中的数据元素个数也可以是不相等的,这种索引结构称作不等长索引结构。
下图为不等长索引表结构图:
; 带索引结构的数据元素查找算法的比较次数由两部分组成:
一部分是在索引上查找的比较次数 ;
一部分是在主表中的某个子表中进行查找的比较次数。
假设索引的长度为m,主表中每个子表的长度为s,并假设在索引上和在主表上均采用顺序查找算法,则整个查找算法的平均查找长度为:
;10.3 动态查找;下图为一棵二叉排序树;二叉排序树的查找算法 :
public BiTreeNode find(int item){
您可能关注的文档
最近下载
- 【有“化”好说1】必修1 物质的量、氧化还原反应.pdf VIP
- 读《思维导图与小学英语教学》有感.docx VIP
- 《旅游景区服务与管理》教案 第7课 熟悉旅游景区的自助式解说服务.docx VIP
- PSA15000Nm3h制氢装置操作手册.pdf VIP
- 《旅游景区服务与管理》教案 第6课 做一名优秀的景区讲解员.docx VIP
- 《旅游景区服务与管理》教案 第5课 认识旅游景区的解说服务.docx VIP
- 开利吊顶式新风机新样本N-DBFP(X)DFP(X).pdf VIP
- 【大单元教学】第四章 中国的经济发展 单元教学分析 人教版地理八年级上册.docx
- 历届茅盾文学奖获奖作品名 单.doc VIP
- 检验仪器分析技术 课件 第一章 临床检验分离仪器.pptx
文档评论(0)