#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
#define max 20
typedef struct{
int data[max];
int len;
}Sstable;
typedef struct
{
int data[max];
int position[max];
}Div;
int Ssearch(Sstable &S,int &key)
{
int i;
i=0;
while(i<=S.len && S.data[i]!=key)
i++;
if(i==S.len+1)
return 0;
return i;
}
int Ssearch_Bin(Sstable &S,int &key)
{
int mid,high,low;
low=1;
high=S.len;
while(low<high)
{
mid=(high+low)/2;
if(S.data[mid]==key)
return mid;
else if(S.data[mid]>key)
high=mid-1;
else
low=mid+1;
}
return 0;
}
int Div_Block(Sstable S,int key)
{
int i;
}
int main()
{
Div D;
int b;
Sstable s;
int n,i;
int j;
int m;
int temp;
int key;
srand(time(0));
printf("输入数的个数:\n");
scanf("%d",&n);
s.len=n;
for(i=1;i<=n;i++)
s.data[i]=rand()%90+10;
printf("随机产生的数为:\n");
for(i=1;i<=n;i++)
printf("%d ",s.data[i]);
printf("\n");
printf("输入需要查找的数:\n");
scanf("%d",&key);
printf("数在表中的位置为:\n");
printf("%d\n",Ssearch(s,key));
for(i=1;i<=n;i++)
for(j=i;j<=n;j++)
{
if (s.printf("输入将表分块数:\n");
scanf("%d",&b);
for(i=1;i<S.len;i++)data[i]>s.data[j])
{
temp=s.data[i];
s.data[i]=s.data[j];
s.data[j]=temp;
}
}
printf("排完序后数组:\n");
for(i=1;i<=n;i++)
printf("%d ",s.data[i]);
printf("\n");
printf("输入需要查找的数:\n");
scanf("%d",&key);
printf("数在表中的位置为:\n");
printf("%d\n",Ssearch_Bin(s,key));
printf("输入将表分块数:\n");
scanf("%d",&b);
printf("输入数的个数:\n");
scanf("%d",&n);
m=n/b;
memset(D.data,0,sizeof(D.data));
printf("输入%d个数\n",n);
for(i=0;i<n;i++)
{
D.position[i/m]=i;
scanf("%d".&s.data[i]);
}
for(i=0;i<n;i++)
{
}
return 0;
}
分块查找
最新推荐文章于 2024-07-15 08:43:45 发布