定义一个有100数据元素的整型数组,按顺序存储80个整数,用二分查找算法实现从中查找任意一个元素。

只求代码
2025-03-30 13:21:46
推荐回答(1个)
回答1:

int a[100]; //80个数据自己定义,从小到大排列。我直接利用了
int m=0,n=79,mo,x;
scanf("%d",&x);
if(xa[79]) //判断是否在这个数组范围之内
printf("no\n");
else if(x==a[m]) //下面4句式判断是否是两个端点的数据
printf("the %d",m+1);
else if(x==a[n])
printf("the %d",n+1);
else //最后在中间的话,循环二分法查找
for(;;)
{
mo=(m+n)/2;
if(x==a[mo]) //中间那个如果是,打印退出循环即可
{
printf("the %d",mo+1);
break;
}
if(m==(n-1)) //如果mn相差1还没有找到,那就是没有,打印no并推出循环
{
printf("no\n");
break;
}
if(x n=mo;
else //否则,在mo和n之间,m移到mo位置
m=mo;
}