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

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

ID:62043242

大小:247.00 KB

页数:8页

时间:2021-04-16

软件技术基础:查找算法.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相等,则查找成功;如果关键字小于给定值K则说明

2、被查找记录必在前半区间中;反之则在后半区间中。这样把搜索区间缩小了一半,继续进行查找。在算法中,设置一个下界指示器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    查找不成功假设记录的关键字为(5,13,17,42,46,55,70

3、,94),现分别用K为55和12进行查找,查找过程如图2.70所示,其中(a)为K=55,查找成功;(b)为K=12,查找失败。个人收集整理勿做商业用途对分查找算法如下:BINSERRCH(r,n,K)1.low←1;high←n//上下界指示器赋初值//2.while (low<high)do3.mid←(low+high)div2 // div为整除//4.case5.K=r[mid].key:{查找成功;return}6.K>r[mid].key:low←mid+17.K<r[mid].key: high←mid-18.end(case)9.end(while)10.return 2.7

4、.4分块查找分块查找又称索引顺序查找,它要求文件中的记录关键字“分块有序”个人收集整理勿做商业用途,即文件可按关键字分为若干块,且前一块中最大的关键字小于后一块中最小的关键字,而每一块内的关键字则不一定有序。基本思想为:先将各块中的最大关键字构成一个索引表,由于文件是分块有序的因此索引表是递增有序的。查找过程分两步进行,第一步先对索引表进行对分或顺序查找,以确定记录在哪一块;第二步在所在块中进行顺序查找。如图2.72所示2.7.5二叉排序树查找BSTSEARCH(K,t)//K为查找给定值,t为根结点指针//1.p←t//p为查找过程中进行扫描的指针//2.while(p<>nil) do3.

5、case4.K=data(p):{查找成功;return}5.K<data(p):{q←p;p←Lchild(p)} //继续向左搜索//6.K>data(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.t=nil:p←s;//插入结点为根结点//12.K<data(q):L child(q)←s13.K>data(q): R child(q)←s14.end(cas

6、e)15.return2.7.4哈希表技术及其查找个人收集整理勿做商业用途1.哈希表哈希查找的基本思想是:通过对给定值作某种运算,直接求得关键字等于给定值的记录在文件中的位置。这就要求在建立文件时,对记录的关键字和她的存储位置之间建立一个确定的对应关系。设关键字key与存储位置见的对应关系为H(key),若用一维数组来存放文件,则H(key)即为数组的下标。称函数H为哈希(hash)函数,H(key)为哈希地址,这个一维数组称为哈希表。例如以学生姓名为关键字的记录集合{Wang,Li,Zhao, Shen,Gao,Fung,Bai,Chang, Ren,Ma},若采用关键字中第一个字母表中的序

7、号作为哈希函数,则可以构成一个哈希表如图2.74所示2.构造哈希函数的集中方法(1)数字分析法将不均匀的数字删除,然后根据存储空间的大小来决定数字的数目。例如有7个学生的学号为54242 2241542 813678542228171542 38 9671542541577542885376542193552个人收集整理勿做商业用途第1,2,3位的数值太不均匀,删去;第8位中数值7出现次数太多,删

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

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

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