#include<stdio.h>
int main(void)
{
int arr[]={1,2,3,4,5};
int len=sizeof(arr)/sizeof(arr[0]);
int left=arr[0];
int right=len-1;
int number=2;
int mid=(left+right)/2;
int i;
for(i=0;i!=arr[mid];i++)
{
if(number>arr[mid])
{
left=mid+1;
}
else if(number<arr[mid])
{
right=mid-1;
}
}
if(number==arr[mid])
{
printf("找到了 %d\n",arr[mid]);
}
else
{
printf("找不到\n");
}
}
二分查找法用for循环的实现,结果只能输出3,换个数就找不到求解答。
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
6条回答 默认 最新
关注mid=(left+right)/2 这句要放在for循环里面,修改一下就可以了
#include<stdio.h> int main(void) { int arr[]={1,2,3,4,5}; int len=sizeof(arr)/sizeof(arr[0]); int left=arr[0]; int right=len-1; int number=2; int mid=0; int i; for(i=0;i!=arr[mid];i++) { mid=(left+right)/2; if(number>arr[mid]) { left=mid+1; } else if(number<arr[mid]) { right=mid-1; } } if(number==arr[mid]) { printf("找到了 %d\n",arr[mid]); } else { printf("找不到\n"); } }运行结果:
找到了 2本回答被题主选为最佳回答 , 对您是否有帮助呢?解决评论 打赏 举报无用 1