- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1问题描述 2设计
2. 1存储结构设计
2主要算法设计
2. 3测试用例设计 3调试报告
1调试过程中遇到的问题的解决
3. 2对设计和编码的讨论和分析 4经验和体会
4.1收获
2对算法改进的设想 5附源程序清单和运行结果
5. 1源程序代码
122运行结果与分析
12
参考文献
索引顺序查找
1问题描述
这个课程设计的题目是“索引顺序查找”,其实就是分块查找是介于顺序查 找和折半查找之间的查找方法。将数据分别放入几个块中,其中块之间是有序
的,即前边的最大数小于后边的最小数,块内数据可以是无序的。编写出一个 能进行索引顺序查找的程序,要求能自动建立索引表;对任意待查找的关键字, 若查找成功,给出其关键字比较次数;测试用例自己设计。
我的设计思想是建立一个数组用来存放数据,所存放的数据之间是按块有 序的,所以设计之前要想好自己怎样分块。每个数据都只有自己的地址address,
每块内都有一个最大值max。比较关键字key时先比较最大值,符合条件后再 进入块内比较。不管所比较的关键字在比较关键字时是不是恰好和最大值相等, 都要进入块再重新比较,并且从相应块的首地址开始比较,然后向后依次比较。 从比较一开始,就会有一个计数关键字count开始计数。
因此,分块查找过程需分两步进行。先确定待查记录所在的块(子表),然后在块 中顺序查找。假设给定值key=38,则先将key依次和索引表中各最大关键字进行 比较,因为22key48,则关键字为38的记录若存在,必定在第二个子表中, 由于同一索引项中的指针指示第二个子表中的第一个记录是表中第7个记录,则 自第7个记录起进行顺序查找,直到L.data[10]=key为止。假如此子表中没有关键 字等于key的记录(例如:key=29时自第7个记录起至第12个记录的关键字和key 比较都不等),则查找不成功。
索引顺序查找的性能分析:
分块查找的平均查找长度为:
其中,D为查找索引表确定所在块的平均查找长度
Zir为在块中查找元素的平均查找长度。
若用顺序查找的方法确定所在的块,贝!h
V JSbI O IhI £ A o
若用折半查找确定所在的块,贝!h
AS%= £?+^ = +丄办=扇叫A些罟
S u 2 £
2设计
2.1存储结构设计
这个程序首先用到了2个结构体,typedef struct {datatype data[Maxsize]; int length;] list; typedef structf datatype max;int address;}index 分另U表 示定义索引表、定义块表。其中key表示待查找的索引值;max表示块内索引的 最大值,即为最大关键字,address为块内第一个索引的地址;datasize表示数组
所能容纳的最多元素,
所能容纳的最
多元素,length表示表内元素的个数。
在创建块表时,int intput (list *L, index *index),定义了L为list的引用, index为index的数据成员。先将表的长度L-length定义为0,每输入一个数,表长 度随之加1,然后输入要建的块数,并且输入每个块的首地址。指明每个块的最大 值,以便在下一个函数indexsearch中直接将key与最大值进行比较。
在查找时,我定义了 函数int indexsearch(list Ljndex index[]9int len^datatype
key),现将关键字key与每一块的最大index[i].key进行比较,从第一块开始,依次向 后比较,当计数器i超过块的个数时,返回?1;当符合条件ivlenkeyindex[i]?max时, 进入块进行比较。从当前块的首地址元素开始依次向后比较。无论是比较最大值还是比 较块中元素,比较次数计数器count—直在计数。当存在块中元素与关键字相等时,输 出关键字的比较次数conn併且返回当前元素的地址addresso若当前块中没有元素与关 键字相等,返回?1?
2.2主要算法设计
为了体现程序的简单与高效,我将程序最终到造成了只用两个函数就完成了 主要功能的实现,在函数index中输入所有数据元素与地址和要分的块数,以及 每一块的最大值。在函数indexsearch中实现了关键字的比较,其中包括关键字 与最大元素的比较和响应块中每个元素的比较,直到找到相应元素为止。而且 比较次数与相应元素的地址也在这个函数中体现出来。
根据索引顺序査找的原理,得知分块查找需两步进行,要先确定待查所在的 块(子表),然后在块中顺序查找,所以至少需要两个查找函数。查找块函数可 用折半查找或者顺序查找。
一般情况下进行分块查找,可以将长度为n的表均匀地分成b块,每块含有 s个记录,即b= rn/s^ ;假
您可能关注的文档
最近下载
- 2024-2025学年 八年级上册物理(2024年新教材)教材课后习题-练习与应用(原动手动脑学物理).docx VIP
- 建筑施工承插型盘扣式钢管脚手架安全技术标准 JGJT231-2021.pdf VIP
- 动物学全套课件.pptx VIP
- 公务礼仪培训.pptx VIP
- (2025年高考真题)2025年全国高考一卷英语真题(原卷版).docx VIP
- Audition实例教程(Audition CC 2019)全套PPT课件.pptx VIP
- 中国糖尿病足诊治指南(全文版).doc VIP
- GA602-2013 干粉灭火器装置.docx VIP
- 初中校园心理剧剧本集合3篇.docx VIP
- 冷库安全操作规程.docx VIP
原创力文档


文档评论(0)