当前位置:文档之家› 顺序查找

顺序查找

《数据结构》实验
题目:顺序查找班级:08计科
学号:10号姓名:
#include <stdio.h>
#define MAX_SIZE 100
typedef struct{
int key;
}element;
element list[MAX_SIZE];
int seqsearch(element list[],int searchnum,int num);
int main()
{
int i,num,searchnum,k;
printf("请输入元素的个数:");
scanf("%d",&num);
printf("请输入元素:\n");
for(i=0;i<num;i++)
{
scanf("%d",&list[i].key);
}
while(1)
{
printf("请输入要查询的数据元素:");
scanf("%d",&searchnum);
k=seqsearch(list,searchnum,num);
if(k!=-1)
{
printf("所查询元素的下标为:");
printf("%d\n",k);
}
else
printf("查询元素不存在。

\n");
}
return 0;
}
int seqsearch(element list[],int searchnum,int num)
{
int j;
list[num].key=searchnum;
for(j=0;list[j].key!=searchnum;j++)
;
return j<num?j:-1;
}
1、折半查找:
#include <stdio.h>
#define MAX_SIZE 100
#define COMPARE(a,b) (a)>(b)?1:(a)==(b)?0:-1
typedef struct{
int key;
}element;
element list[MAX_SIZE];
int binsearch(element list[],int searchnum,int num); int main()
{
int i,num,searchnum,k;
printf("请输入元素的个数:");
scanf("%d",&num);
printf("请输入元素:\n");
for(i=0;i<num;i++)
{
scanf("%d",&list[i].key);
}
while(1)
{
printf("请输入要查询的数据元素:");
scanf("%d",&searchnum);
k=binsearch(list,searchnum,num);
if(k!=-1)
{
printf("所查询元素的下标为:");
printf("%d\n",k);
}
else
printf("查询元素不存在。

\n");
}
return 0;
}
int binsearch(element list[],int searchnum,int num) {
int left=0,right=num-1,middle;
while(left<=right)
{
middle=(left+right)/2;
switch(COMPARE(list[middle].key,searchnum))
{
case 1:right=middle-1;break; case 0:return middle;
case -1:left=middle+1;
}
}
return -1;
}
实验结果:。

相关主题