求分块查找的算法

hikozl 2004-10-04 08:06:27
恩。 。请回复在下面,谢谢。。
...全文
423 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
挺拔的劲松 2004-10-09
  • 打赏
  • 举报
回复
下面是分块查找的程序,表table的长度为16,分为4块。程序先建立索引表index,然后对给出的关键码查找索引以确定在哪一块,接着在块内进行查找。
#include<stdio.h>
#define n 16
#define m 4
typedef struct{int key;
int ip;
}indexelement;
typedef struct{int key;
float info;
}element;
typedef indexelement indextype[m];
typedef element sqlist[n];

int sequentialsearch(sqlist r,indextype index,int block,int k)
{
int i;
i=index[block].ip;
while(k!=r[i].key&&k<=index[block].key) i++;
if(k!=r[i].key) i=0;
return(i);
}

main()
{
int i,j,k;
sqlist table;
indextype index;
printf("input %d element's key\n",n);
for(i=0;i<n;i++)
{
scanf("%d",&j);
table[i].key=j;
}
printf("input %d element's ip to form an index'ip\n",m);
for(i=0;i<=m-1;i++)
{
scanf("%d",&j);
if(j<0||j>n)
{
printf("ERRORS!");
exit(0);
}
index[i].ip=j;
}
printf("input %d element's key to form the index'key\n",m);
for(i=0;i<=m-1;i++)
{
scanf("%d",&j);
index[i].key=j;
}
printf("search which key?\n");
scanf("%d",&k);
i=0;
while(k>index[i].key&&i<m-1) i++;
if(i>=m) printf("not fount\n");
else
{
j=sequentialsearch(table,index,i,k);
if(j==0) printf("not fount\n");
else printf("loc=%d\n",j);
}
}
hikozl 2004-10-06
  • 打赏
  • 举报
回复
恩。。拜托各位了。。帮帮忙。。
hikozl 2004-10-05
  • 打赏
  • 举报
回复
晕啊。。具体的解释我知道,但就是写不出来这算法。把算法帖在下面好吗?
hcj2002 2004-10-04
  • 打赏
  • 举报
回复
分块查找就是把表分成若干块,每一个快中的关键字不一定是有序的,但块之间是有序的(后面的关键字均大于前面的);此外还建立一个索引表,索引表按关键字有序。

因此分块查找分两步:1.在索引表中找相关的快。
2.在块中找出关键字。
内容概要:本文详细介绍了静态查找表及其三种常见查找方法——顺序查找、折半查找(二分查找)和分块查找。静态查找表是一种仅支持查找操作、不允许插入或删除的数据结构,具有数据固定、结构简单、便于高效查询的特点。文章逐一解析了三种查找算法的原理、Python代码实现、时间复杂度及适用场景,并通过实例演示了各算法的具体应用。顺序查找适用于小规模或无序数据,实现简单但效率较低;折半查找要数据有序,具有较高的查找效率,适合大规模数据;分块查找介于两者之间,适用于分块有序的数据结构,兼顾效率与灵活性。最后,文章从数据规模、有序性和查找频率等方面指导如何选择合适的查找方法。; 适合人群:具备基本编程基础和数据结构知识的初学者或程序员,尤其是计算机专业学生及工作1-3年的开发人员。; 使用场景及目标:①理解静态查找表的基本概念及其在数据库、字典查询等场景中的应用;②掌握顺序、折半、分块查找算法原理与代码实现;③能够根据数据特征选择最优查找方法以提升程序性能; 阅读建议:建议结合代码动手实践,通过调试和测试不同数据集加深对各类查找算法的理解,重点关注算法的时间复杂度分析与适用边界条件。

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧