二分查找-百度百科
二分查找也称折半查找(Binary Search),是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。
算法要求
- 必须采用顺序存储结构
- 必须按关键字大小有序排列。
执行流程
- 首先确定该序列的中间位置 mid = (begin+end) >>> 1,相当于(begin+end) / 2
- 然后让需要查找的数和arr[mid]比较
1.findVal > arr[mid],说明要查找的数在mid右边,因此需要递归向右查找
2.findVal < arr[mid],说明要查找的数在mid左边,因此需要递归向左查找
3.findVal == arr[mid],说明找到,直接返回
二分查找代码示例
public static int binarySearch(int[] array, int findVal){
if(array==null || array.length==0) return -1;
int begin = 0;
int end = array.length-1;
while(begin < end){
int mid = (begin + end) >>> 1;
if (findVal < array[mid]){
end = mid;
}