猿问

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


#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;

}



qq_不睡觉的怪叔叔_0
浏览 1305回答 2
2回答

onemoo

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

飞奔的王麻子

第一个if语句,边界条件有问题。可以先判断输入的数是否满足边界条件,然后再用折半查找;否则你得重写这个折半算法。
随时随地看视频慕课网APP
我要回答