折半查找法,最后一个数找不到
以下代码找不到最后一个数100001,错在哪里?帮找下原因./*100000个数从小到大排列,输入任意数找出其所在位置,无则输出“无此数”,用折半查找法*/
#include <stdio.h>
main()
{
int a[100000];
int i,b,sta,mid,end;
for(i=0;i<100000;i++)
{
a[i]=i+1;
}
a[99999]=100001;
printf("%d\n",a[99999]);
line1:
sta=1,mid=100000/2,end=100000;
printf("b=\n");
scanf("%d",&b);
for(i=1;i<=100000;i++)
{
if(b<a[mid-1])
{
end=mid;
mid=sta+(end-sta)/2;
}
else if(b>a[mid-1])
{
sta=mid;
mid=sta+(end-sta)/2 ;
}
else
{
printf("在第%d位\n",mid);
mid=-1;
break;
}
}
if(mid!=-1) printf("查无此数\n");
if(getch()!=13) goto line1;
}