顺序查找
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据结构》实验
题目:顺序查找班级:08计科
学号:10号姓名:
#include
#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 { 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 } 1、折半查找: #include #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 { 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; } 实验结果: