社区
C语言
帖子详情
求分块查找的算法
hikozl
2004-10-04 08:06:27
恩。 。请回复在下面,谢谢。。
...全文
453
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.在块中找出关键字。
「分块系列」数列分块入门9 解题报告
数列分块入门9 题意概括 静态,区间
求
众数。 写在前面 还记得分块1就提到的关于块的大小有时要通过计算么??在这里就得到了体现! 正题 为了方便起见,我们设把数列分成K块~ 这道题很值得思考。 先离散化~ 然后记录位置~ 我们可以考虑,对于L ~ R之间的众数只有可能是以下三种情况: b[L]块中L之后的部分 b[R]块中R之前的部分 b[L] + 1块到b[R] - 1块的众数 第三条可以预...
算法
竞赛进阶指南---0x44 蒲公英(分块)
题面 题解(分块) 代码 #include<iostream> #include<cstdio> #include<string> #include<cstring> #include<algorithm> #include<vector> #include<cmath> using namespace std; typedef long long ll; const int N = 1e5 + 10; int n,
算法
|
分块查找
算法
|
分块查找
1. 简介
分块查找
也称为索引顺序表查找。
分块查找
就是将顺序表(主表)分成若干个子表,然后为每个子表建立一个索引表,利用索引在其中一个子表中查找。 两部分: 索引表:存储顺序表的每个子表的开始索引和最大值。 顺序表:主表所有数据存放的位置。 1.1. 条件 子表内可以是无序的,但是子表之前面的子表中每个元素必须小于后面子表中的每个元素。 1.2. 分块 纯个人的一些理解,欢迎一起沟通交流 1.2.1. 前言 我第一次看
分块查找
时也十分纠结应该怎么分块每个子表数据应该多长,什么
查找
算法
之
分块查找
查找
算法
之
分块查找
C语言
70,037
社区成员
243,247
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章