黑马程序员——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循环第一行。
以下为代码片段
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循环第一行。
相关文章推荐
- 黑马程序员——04_写泛型注意
- 黑马程序员——03_集合中null的注意
- 我的游戏蜗牛web前端面试经历
- 黑马程序员——01_比较器中比较结果顺序快速颠倒
- 黑马程序员——Java基础--集合(四)
- 10+年程序员总结的20+条经验教训
- 如何跟程序员谈一场没有Bug的恋爱
- 标 题: [心得]传统IT转互联网面试经验分享
- 码农、黑客和2B程序员之间的区别
- 《程序员的自我修养》读书笔记5
- 面试题34:丑数
- 面试需要掌握知识点
- 黑马程序员---android入学考试题
- it男的面试
- AJAX 20道经典面试题
- 面试题准备(01)-反转句子中单词的顺序
- 黑马程序员——Java基础---反射总结
- 百度研发工程师面试题
- 最正确的学习方法,程序员如何学习一项你之前完全不了解的新技术?
- 黑马程序员——Java基础---线程的另一个总结(10)--练习,空中网面试题总结