周记1
#include<stdio.h>
int bisearch(int a[], int i,int n)
{
int left=1,right=i,s=0;//如果找到s就放索引下标,没有就是0传回判定
while(left<=right)
{
int mid=(left+right)/2;
if(a[mid]<n){
left=mid+1;
}else if(a[mid]>n){
right=mid-1;
}else if(a[mid]==n){
s=mid;
printf("%d",s);
break;
}
}
return(s);
}
int main()
{
int a[100],i,n,r;
printf("请输入数组元素:");
for(i=1;i<=6;i++)
scanf("%d",&a[i]);
printf("请输入您要查找的数");
scanf("%d",&n);
r=bisearch(a,i-1,n);//调用函数(数组,数组大小,查找的数)
if(r==0)
printf("0");
else
printf("要查找的数在第%d位",r);
return 0;
}
五、实验心得(实验中存在的疑问或其他)
本次实验中我感到疑惑我要是把这两个if代码去掉那左端和右端的就找不到。然后我小脑瓜灵光一闪,left是<=等right的这样才不会略过left和right的数据。
这是while(left<right)的代码加了这样个if才ok…

浙公网安备 33010602011771号