欢迎来到天天文库
浏览记录
ID:60719274
大小:14.83 KB
页数:3页
时间:2020-12-10
《C语言分块查找算法-索引顺序查找算法.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C语言分块查找算法,索引顺序查找算法例如,采用分块查找法在有序表11、12、18、28、39、56、69、89、96、122、135、146、156、256、298中查找关键字为96的元素。査找特定关键字元素个数为15,要求用户输入有序表各元素,程序输出査找成功与否,若成功,还显示元素在有序表中的位罝。实现过程:(1)定义结构体index,用于存储块的结构,并定义该结构体数组 index_table。(2)自定义函数block_search(),实现分块查找。(3)main()函数作为程序的入口函数。程序代码如下:1.#include2.structindex//定义
2、块的结构3.{4.intkey;//块的关键字5.intstart;//块的起始值6.intend;//块的结束值7.}index_table[4];//定义结构体数组8.9.intblock_search(intkey,inta[])//自定义实现分块查找10.{1.inti,j;2.i=1;3.while(i<=3&&key>index_table[i].key)//确定在哪个块中4.i++;5.if(i>3)//大于分得的块数,则返回06.return0;7.j=index_table[i].start;//j等于块范围的起始值8.while(j<=index_table[i].
3、end&&a[j]!=key)//在确定的块内进行顺序查找9.j++;10.if(j>index_table[i].end)//如果大于块范围的结束值,则说明没有要査找的数,j置011.j=0;12.returnj;13.}14.15.intmain()16.{17.inti,j=0,k,key,a[16];18.printf("请输入15个数:");19.for(i=1;i<16;i++)20.scanf("%d",&a[i]);//输入由小到大的15个数21.for(i=1;i<=3;i++)22.{23.index_table[i].start=j+1;//确定每个块范围的起
4、始值24.j=j+1;25.index_table[i].end=j+4;//确定每个块范围的结束值26.j=j+4;27.index_table[i].key=a[j];//确定每个块范围中元素的最大值28.}29.printf("请输入你想査找的元素:");30.scanf("%d",&key);//输入要查询的数值31.k=block_search(key,a);//调用函数进行杳找32.if(k!=0)33.printf("查找成功,其位置是:%d",k);//如果找到该数,则输出其位置34.else35.printf("查找失败!");//若未找到,则输出提示信息1.
5、return0;2.}运行结果:请输入15个数:111218283956698996122135146156256298请输入你想査找的元素:96查找成功,其位置是:9
此文档下载收益归作者所有