二分搜索
2017-07-24 11:14
134 查看
//二分查找的前提:有序序列 public static int binSearch(int[] arr,int number){ int low=0; int high=arr.length-1; int mid; while(low<=high){ //low<=high是一个关键点,不是low<high //和mid=(low+high)/2的效果一样 //但是mid=(low+high)/2可能会导致内存溢出 //而mid=low+(high-low)/2可以避免这一点 mid=low+(high-low)/2; if(number<arr[mid]){ high=mid-1; }else if(number==arr[mid]){ return mid; }else{ low=mid+1; } } //必须返回负数,表明没有找到 //-(low+1)是一个良好的解决方法 //-1表示没有找到,如果把它插进来,它应该位于该序列的第1个位置 //-2表示没有找到,如果把它插进来,它应该位于该序列的第2个位置 return -(low+1); }
相关文章推荐
- 分治思想 - 二分搜索技术 - MATLAB代码 list是数据集合,x是要查找的数据。
- NYOJ 306 走迷宫 【二分+搜索】
- Search Insert Position:二分搜索
- poj 3273 Monthly Expense 【二分搜索(最大化最小值)】
- 分治法:二分搜索
- 二分搜索(1)
- [BZOJ 1052] 覆盖问题 二分+搜索(DFS)+贪心
- 二分搜索
- 二分搜索--poj3104
- 二分搜索应用二
- BestCoder Round #62 (div.2)-Clarke and baton(二分搜索)
- java 二分搜索
- 递归方法实现二分搜索
- POJ_1064 二分搜索
- poj 2112 Optimal Milking(最大费用流+dinic算法+二分搜索)
- 递归与分治策略之二分搜索(Java版本)
- 搜索-二分搜索
- 二分搜索 2015百度之星初赛1 HDOJ 5248 序列变换
- 【常用算法思路分析系列】与二分搜索相关高频题
- Can you solve this equation? (二分搜索)解题报告