关于 2分查找

wswhp 2009-10-07 10:24:40
写了个数组2分查找的方法
发现运行死循环了....
大家看一下
public int searchGlyphIndex(int codePoint) {
int[] iArray = { 4, 12, 23, 33, 45, 53, 65, 69, 70, 72, 78, 88, 90 };
int length = iArray.length;
int start = 0;
int end = length - 1;
int middle;
while (start <= end) {
middle = (end - start) / 2;
if (iArray[middle] == codePoint)
return middle;
else if (iArray[middle] > codePoint)
end = middle - 1;
else
start = middle + 1;
}
return 0;
}

比如查找88 就会死循环....
...全文
52 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
amdgaming 2009-10-07
  • 打赏
  • 举报
回复


还用 了 技巧啊。其实就 是

middle = (start + end) / 2;
防止溢出 用一下 小技巧 。。。。

wswhp 2009-10-07
  • 打赏
  • 举报
回复
好了 谢谢阿
zhongweijian 2009-10-07
  • 打赏
  • 举报
回复
middle = (end - start) / 2; 应该为middle = start + (end - start) / 2;

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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