为了账号安全,请及时绑定邮箱和手机立即绑定

我写的折半查找法 ,为什么输入7,控制台没反应.

我写的折半查找法 ,为什么输入7,控制台没反应.

C
qq_不睡觉的怪叔叔_0 2016-04-06 17:17:22
#include<stdio.h>int main(){ int a[10]={7,9,12,18,21,25,33,39,45,60}; int x,left=0,right=9,mid,flag=0; printf("Input a number to be searched:\n"); scanf("%d", &x); if(x>=a[left]&&x<=a[right]) while(!flag&&right>=left) { mid=(left+right)/2; if(a[mid]==x) flag==1; else if(x>a[mid]) left=mid+1; else right=mid-1; } if(flag==1) printf("position is %d", mid); else  printf("Not Exist!"); return 0;}
查看完整描述

2 回答

已采纳
?
onemoo

TA贡献883条经验 获得超454个赞

if(a[mid]==x) 这一句中,你想设置flag为1,但你写成 flag == 1 了

查看完整回答
1 反对 回复 2016-04-06
?
飞奔的王麻子

TA贡献12条经验 获得超5个赞

第一个if语句,边界条件有问题。可以先判断输入的数是否满足边界条件,然后再用折半查找;否则你得重写这个折半算法。

查看完整回答
反对 回复 2016-04-06
  • 2 回答
  • 0 关注
  • 1304 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信