您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > C语言分块查找算法-索引顺序查找算法
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.#includestdio.h2.structindex//定义块的结构3.{4.intkey;//块的关键字5.intstart;//块的起始值6.intend;//块的结束值7.}index_table[4];//定义结构体数组8.9.intblock_search(intkey,inta[])//自定义实现分块查找10.{11.inti,j;12.i=1;13.while(i=3&&keyindex_table[i].key)//确定在哪个块中14.i++;15.if(i3)//大于分得的块数,则返回016.return0;17.j=index_table[i].start;//j等于块范围的起始值18.while(j=index_table[i].end&&a[j]!=key)//在确定的块内进行顺序查找19.j++;20.if(jindex_table[i].end)//如果大于块范围的结束值,则说明没有要査找的数,j置021.j=0;22.returnj;23.}24.25.intmain()26.{27.inti,j=0,k,key,a[16];28.printf(请输入15个数:\n);29.for(i=1;i16;i++)30.scanf(%d,&a[i]);//输入由小到大的15个数31.for(i=1;i=3;i++)32.{33.index_table[i].start=j+1;//确定每个块范围的起始值34.j=j+1;35.index_table[i].end=j+4;//确定每个块范围的结束值36.j=j+4;37.index_table[i].key=a[j];//确定每个块范围中元素的最大值38.}39.printf(请输入你想査找的元素:\n);40.scanf(%d,&key);//输入要查询的数值41.k=block_search(key,a);//调用函数进行杳找42.if(k!=0)43.printf(查找成功,其位置是:%d\n,k);//如果找到该数,则输出其位置44.else45.printf(查找失败!);//若未找到,则输出提示信息46.return0;47.}运行结果:请输入15个数:111218283956698996122135146156256298请输入你想査找的元素:96查找成功,其位置是:9
本文标题:C语言分块查找算法-索引顺序查找算法
链接地址:https://www.777doc.com/doc-7237598 .html