第十三周

折半算法

#include <stdio.h>
#include <stdlib.h>
#define listsize 20
typedef int keytype;
typedef struct
{
keytype key;
}recordtype;
typedef struct
{
recordtype r[listsize+1];
int length;
}recordlist;

void Bininput(recordlist *l)
{
int i=1;
printf("请输入数组内容(0截止):\n");
scanf("%d",&(l->r[i].key));
while (l->r[i].key!=0)
{
i++;
scanf("%d",&(l->r[i].key));
}
l->length=i+1;
}
int Binsrch(recordlist l , keytype k)
{
int low=1;
int high=l.length;
while(low<=high)
{
int mid=(low+high)/2;
if(k==l.r[mid].key)
return (mid);
else if (k<l.r[mid].key)
high=mid-1;
else
low =mid+1;
}
return (0);
}
int main()
{
int k ;
recordlist l;
Bininput(&l);
printf("\n请输入要查找的数:");
fflush(stdin);
scanf("%d",&k);
if(Binsrch(l,k)==0)
printf("查无此数");
else
printf("要查找的数%d的位置是:%d\n",k,Binsrch(l,k));
return 0;
}

 

posted @ 2020-06-07 22:05  陈渡  阅读(123)  评论(0)    收藏  举报