您的位置:首页 > 职场人生

黑马程序员——05_折半搜索易犯错误

2015-07-05 22:35 381 查看
在写折半搜索时发生了2个错误,固在此总结

以下为代码片段

public static int halfSearch(List l,String key,Comparator<String> Comp){

int max,min,mid;

max=l.size()-1;

min=0;

while(max>=min){

mid=(min+max)>>>1;

if(Comp.compare((String)l.get(mid),key)>0)

max=mid-1;

else if(Comp.compare((String)l.get(mid),key)<0)

min=mid+1;

else

return mid;

}

return -min-1;

}

发生错误1:把mid赋值放在了while循环外,导致程序挂。

发生错误2:mid赋值写成了mid=max>>>1; 导致程序挂。

两个错误均为严重错误,导致死循环。

正确应将mid=(min+max)>>>1;放在while循环第一行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: