折半法查找为什么反回的总是-1,多谢

哈哈嘻嘻123456789 2018-03-23 11:16:45
int zhebanfachazhao( int sz[ ])
{
int low,mid,high,n=4,m;
low=sz[0];
high=sz[n-1];
printf("what number do you find\n");
scanf("%d",&m);
while (low<=high)
{
mid=(low+high)/2;
if (sz[mid]>m)
{
high=mid-1;
}
else if (sz[mid]<m)
{
low=mid+1;
}
else if (sz[mid]==m)
{

return mid;
}
}
return -1
}
...全文
306 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2018-03-24
  • 打赏
  • 举报
回复
low=sz[0];
high=sz[n-1];
low和high应该都是下表而不是下表对应的值。因此,应改成:
low = 0;
high = n-1;
littlely_ll 2018-03-24
  • 打赏
  • 举报
回复
没找到不就是-1嘛
wallesyoyo 2018-03-24
  • 打赏
  • 举报
回复

low=sz[0];
high=sz[n-1];
这块代码写错了,low=0;high=n-1; 还有数组大小和查找的值最好作为参数传进来。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧