有15个数按由大到小的顺序存放在一个数组中,输入一个数,用折半法查找该数是数组中第几个元素的值
现在编了下面的程序:
main()
{
int str[15],i,j,p;
for (i=0;i<15;i++)
str[i]=15-i;
scanf("%d",&p);
if(p>15||p<1)
printf("the number is not here!");
for(i=0,j=14;i<=j;)
{if (p<str[(i+j)/2])
i=(i+j)/2;
else if(p>str[(i+j)/2])
j=(i+j)/2;
else
{printf("it is the %d number",1+(i+j)/2);break;}
}
}
15到2每个数字均是正确的,但是输入1,却没有结果,好像进入死循环了
不知何故
大侠请赐教