求棒助折半查找问题
有15个数按由小到大顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则打印出“无此数”。输入10的时候,没有结果出来,程序停顿住了,输入其它数都得正常结果,为什么这样?哪位大神帮帮忙,找下问题出在哪?
代码如下:
int main(){
static int a[15]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
int i,n,l,j=0;
l=sizeof(a)/sizeof(a[0]);
scanf("%d",&n);
i=(l-1)/2;
j=i;
do{
if(a[j]<n){
i/=2;
j=i+j+1;
}
if(a[j]>n){
i=j;
i/=2;
j=i;
}
if(a[j]==n){
printf("yes,%d\n",j);
break;
}
if(i==0&&a[j]!=n)printf("no\n");
}while(i>0);
system("pause");
return 0;
}