- 1、本文档共15页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
分块查找课程设计精选
目 录
1实践的目的与要求 1
1.1 实践目的 1
1.2 课程设计要求 1
2 分块查找概述 1
2.1 分块查找简介 1
2.2 基本思想 1
2.3 分块查找的优点 2
3 分块查找的步骤 2
3.1 方法描述 2
3.2 假设 3
4 流程图 4
5 编码 4
6 测试结果及运行结果 5
7 总结 7
8 系统开发所用到的技术 7
参考文献 9
附录 全部代码 10
1实践的目的与要求分块查找是折半查找和顺序查找的一种改进方法,折半查找虽然具有很好的性能,但其前提条件时线性表顺序存储而且按照关键码排序,这一前提条件在结点树很大且表元素动态变化时是难以满足的。而顺序查找可以解决表元素动态变化的要求,但查找效率很低。如果既要保持对线性表的查找具有较快的速度,又要能够满足表元素动态变化的要求,则可采用分块查找的方法。分块查找的速度虽然不如折半查找算法,但比顺序查找算法快得多,同时又不需要对全部节点进行排序。当节点很多且块数很大时,对索引表可以采用折半查找,这样能够进一步提高查找的速度。分块查找由于只要求索引表是有序的,对块内节点没有排序要求,因此特别适合于节点动态变化的情况。当增加或减少节以及节点的关键码改变时,只需将该节点调整到所在的块即可。在空间复杂性上,分块查找的主要代价是增加了一个辅助数组。
需要注意的是,当节点变化很频繁时,可能会导致块与块之间的节点数相差很大,没写快具有很多节点,而另一些块则可能只有很少节点,这将会导致查找效率的下降。
分块查找要求把一个大的线性表分解成若干块,每块中的节点可以任意存放,但块与块之间必须排序。假设是按关键码值非递减的,那么这种块与块之间必须满足已排序要求,实际上就是对于任意的i,第i块中的所有节点的关键码值都必须小于第i+1块中的所有节点的关键码值。建立一个索引表,把每块中的最大关键码值作为索引表的关键码值,按块的顺序存放到一个辅助数组中,显然这个辅助数组是按关键码值费递减排序的。查找时,首先在索引表中进行查找,确定要找的节点所在的块。由于索引表是排序的,因此,对索引表的查找可以采用顺序查找或折半查找然后,在相应的块中采用顺序查找,即可找到对应的节点。
所以分块查找的平均查找长度不仅与查找表的n有关,而且和每一块中的记录个数s有关。所以在给定了长度为n的查找表的前提下,每块中的记录个数d是可变的。容易证明,当s=时,ASLbs =+1,值最小。
若采用折半查找确定待查找记录所在块,那么,分块查找的平均查找长度为:
ASLbs=ASLb+ASLw=log2(b+1)+ = log2(+1)+
由此可见,分块查找的效率是介于顺序查找和折半查找之间的。它比顺序查找的执行速度更要快,比折半查找的执行速度要慢。
分块查找的步骤
3.1 方法描述
在查找表中的18个记录分成三个子表(R1,R2,…,R6),(R7,R8,..,R12),(R13,R14,…,R18),每个子表为一块。首先用待查给定值K在索引表查找,然后再已确定的块中进行顺序查找,当查找表示有序表时,在块中也可用二分查找。
3.2 假设
假设,如图3.1中,如果给定值K=36,则先用K和索引表各关键字进行比较,因为22K48,则关键字为36的记录若果存在,必定在第二个子表块中,然后从第二个字表块的第一个记录的位置序号7开始,按记录顺序查找,知道确定第10个记录是要找的记录为止,查找成功。又如当K=26时,则仍在第二个字表中查找,自第7个记录起按记录顺序查找至第12个记录,每个记录的关键字和K比较都不想等,则查找失败。
引索表 关键字值 22 48 86 块起始地址 1 7 13
22 11 12 8 10 20 30 42 44 36 25 48 60 55 74 49 86 55 查找表 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
第一子表快 第二子表块 第三子表块 图3.1 分块查找表结构示意图
流程图
编码
函数流程:
struct searchtable
//索引表结构体
创建索引表(程序开始)—
输入关键字数据—
自动生成索引表—
赋值并输出索引表—
循环寻找下一个反之跳出循环—
找到元素反之越界找不到元素(程序结束)
#includestdio.h
#includestdlib.h
#includeiostream.h
int table[]={22,11,12,8,10,20,30,42,44,36,25,48,60,55,74,49,86,55}; //list_1.h
{
int stelem;
//关键字数据
int location;
//关键字位置
}
测试结果及运行结果
如图6.1,运行程序后的界面,按待查找的线性表给
您可能关注的文档
- 机械设计课程实践设计报告-汽车前轮转向机构课程设计精选.doc
- 机械设计综合课程设计--薄壁零件冲床机构设计精选.doc
- 机械设计课程设计-一级圆柱齿轮减速器的设计算精选.doc
- 机械设计课程设计-一级斜齿输入联轴器输出开式齿轮精选.doc
- 机械设计课程设计-一级斜齿圆柱齿轮减速器课程设计说明书精选.doc
- 机械设计课程设计-一级圆柱齿轮减速器说明书精选.doc
- 机械设计课程设计-一悬式输送机传动用一级直齿圆柱齿轮减速器精选.doc
- 机械设计课程设计-一级圆柱齿轮减速器的设计精选.doc
- 机械设计课程设计-一级直齿圆柱齿轮减速器精选.doc
- 机械设计课程设计-二级减速器带式输送机传动装置设计说明书精选.doc
- 2024年江西省高考政治试卷真题(含答案逐题解析).pdf
- 2025年四川省新高考八省适应性联考模拟演练(二)物理试卷(含答案详解).pdf
- 2025年四川省新高考八省适应性联考模拟演练(二)地理试卷(含答案详解).pdf
- 2024年内蒙通辽市中考化学试卷(含答案逐题解析).docx
- 2024年四川省攀枝花市中考化学试卷真题(含答案详解).docx
- (一模)长春市2025届高三质量监测(一)化学试卷(含答案).pdf
- 2024年安徽省高考政治试卷(含答案逐题解析).pdf
- (一模)长春市2025届高三质量监测(一)生物试卷(含答案).pdf
- 2024年湖南省高考政治试卷真题(含答案逐题解析).docx
- 2024年安徽省高考政治试卷(含答案逐题解析).docx
文档评论(0)