软件应用技术基础:查找算法.doc

软件应用技术基础:查找算法.doc

ID:58015446

大小:254.50 KB

页数:8页

时间:2020-04-07

软件应用技术基础:查找算法.doc_第1页
软件应用技术基础:查找算法.doc_第2页
软件应用技术基础:查找算法.doc_第3页
软件应用技术基础:查找算法.doc_第4页
软件应用技术基础:查找算法.doc_第5页
资源描述:

《软件应用技术基础:查找算法.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、2.7查找2.7.1查找的基本概念查找的定义:给定一个值K,在含有n个记录的文件中进行搜索,寻找一个关键字值等于K的记录,如找到则输出该记录;否则输出查找不成功信息。2.7.2线性查找线性查找又称顺序查找,是一种最简单的查找方法,它的基本思想是从第一个记录开始,逐个比较记录的关键字,直到和给定的K值相等,则查找成功;若比较结果与文件中n个记录的关键字都不等,则查找失败。如图2.68和图2.692.7.3对分查找又称为跳跃式查找,假设记录是按关键字递增有序排列的,对分查找的基本思想是:先找到“中间记录”,比较其关键字与给定值K相等,则查找成功

2、;如果关键字小于给定值K则说明被查找记录必在前半区间中;反之则在后半区间中。这样把搜索区间缩小了一半,继续进行查找。在算法中,设置一个下界指示器low和一个上界指示器high,它们分别指向待查文件搜索区间的头、尾。由low和high的值可以计算出“中间记录”位置,由mid表示。设顺序表r[1:n]的关键字项为r[i].key(1≤i≤n)将K值r[mid].key比较:若r[mid].key=K查找成功若r[mid].key>K令high=mid-1,继续查找若r[mid].key<K令low=mid+1,继续查找若low>high查找不成

3、功假设记录的关键字为(5,13,17,42,46,55,70,94),现分别用K为55和12进行查找,查找过程如图2.70所示,其中(a)为K=55,查找成功;(b)为K=12,查找失败。8/8对分查找算法如下:BINSERRCH(r,n,K)1.low←1;high←n//上下界指示器赋初值//2.while(lowr[mid].key:low←mid+17.K

4、gh←mid-18.end(case)9.end(while)10.return2.7.4分块查找分块查找又称索引顺序查找,它要求文件中的记录关键字“分块有序”8/8,即文件可按关键字分为若干块,且前一块中最大的关键字小于后一块中最小的关键字,而每一块内的关键字则不一定有序。基本思想为:先将各块中的最大关键字构成一个索引表,由于文件是分块有序的因此索引表是递增有序的。查找过程分两步进行,第一步先对索引表进行对分或顺序查找,以确定记录在哪一块;第二步在所在块中进行顺序查找。如图2.72所示2.7.5二叉排序树查找BSTSEARCH(K,t)/

5、/K为查找给定值,t为根结点指针//1.p←t//p为查找过程中进行扫描的指针//2.while(p<>nil)do3.case4.K=data(p):{查找成功;return}5.Kdata(p):{q←p;p←Rchild(p)}//继续向右搜索//7.end(case)8.end(while)9.GET(s);data(s)←K;Lchild(s)←nil;Rchild(s)←nil;//查找不成功,生成一个新结点s,插入到二叉排序中//10.case11

6、.t=nil:p←s;//插入结点为根结点//12.Kdata(q):Rchild(q)←s14.end(case)15.return2.7.4哈希表技术及其查找1.哈希表8/8哈希查找的基本思想是:通过对给定值作某种运算,直接求得关键字等于给定值的记录在文件中的位置。这就要求在建立文件时,对记录的关键字和她的存储位置之间建立一个确定的对应关系。设关键字key与存储位置见的对应关系为H(key),若用一维数组来存放文件,则H(key)即为数组的下标。称函数H为哈希(hash)函数,H(key

7、)为哈希地址,这个一维数组称为哈希表。例如以学生姓名为关键字的记录集合{Wang,Li,Zhao,Shen,Gao,Fung,Bai,Chang,Ren,Ma},若采用关键字中第一个字母表中的序号作为哈希函数,则可以构成一个哈希表如图2.74所示2.构造哈希函数的集中方法(1)数字分析法将不均匀的数字删除,然后根据存储空间的大小来决定数字的数目。例如有7个学生的学号为542422241542813678542228171542389671542541577542885376542193552第1,2,3位的数值太不均匀,删去;第8位中数值7

8、出现次数太多,删去;假设存储空间为1000,则可选取第4,6,7位作为起存储地址,分别为422,836,281,396,515,853,135。(2)平方取中法8/8如果一组关键

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。