经典算法之二分搜索
2017-10-03 11:36
239 查看
二分搜索(java实现)
二分搜索的关键思想就是如果target存在于A[0..n-1]中,那么它就一定存在于某个特定的范围之内.我们需要做的就是在最短的时间找出这个target在这里需要注意两点
1.边界问题
2.整形溢出问题,举个例子,求a,b的平均值
//int类型占4个字节,范围是(-2的31次方)~ (2的31次方减一) //max=2147483647 min=-2147483648 int a = 2000000000; int b = 1000000000; //int average = (a+b)/2;//因为a+b已经超出了整形的最大值会溢出 int average = a + (a-b)/2;
public boolean soultion(int[] A, int target){ //注意区间范围A[lo..hi] int lo = 0; int hi = A.length - 1; while (lo <= hi){ int mid = lo + ((hi - lo)>>1); if(A[mid] > target) hi = mid - 1; else if(A[mid] < target) lo = mid + 1; else return true; } return false; }
下面还有二分搜索的优化…
相关文章推荐
- 经典算法之二分搜索技术
- 最快搜索算法之二分搜索,最快排序算法之快排【C语言实现】
- [经典算法] 字符串搜索Boyer-Moore
- 经典算法之二分搜索技术
- 经典查找算法之二分查找
- 【LeetCode-面试算法经典-Java实现】【033-Search in Rotated Sorted Array(在旋转数组中搜索)】
- 【LeetCode-面试算法经典-Java实现】【034-Search for a Range(搜索一个范围)】
- 算法基础知识科普:8大搜索算法之二分搜索
- 【LeetCode-面试算法经典-Java实现】【035-Search Insert Position(搜索插入位置)】
- 经典算法之图的广度优先搜索遍历
- 经典算法之二分查找法
- ACM字符串处理算法经典:字符串搜索
- 【LeetCode-面试算法经典-Java实现】【074-Search a 2D Matrix(搜索二维矩阵)】
- (基于Java)算法之二分搜索法
- 算法之二分搜索法
- 【经典算法】图的深度优先搜索和广度优先搜索
- 我的Java开发学习之旅------>Java经典排序算法之二分插入排序
- 分治算法之二分搜索--Binary
- 经典算法之二分查找法
- 经典算法研究系列:四、教你通透彻底理解:BFS和DFS优先搜索算法