第二篇博客_(算法篇)_关于二分法查找(BinarySearch)
二分法简介:
二分法查找是将问题分解为规模更小的子问题,再逐一解决子问题。二分法查找的条件:顺序存储。
二分法算法描述:
从子序列的中间位置mid开始比较,如果key与mid元素相等,则查找成功;否则,根据key大小缩小查找范围,若可以较小,则继续在子序列的前半段查找;反之,继续在后半段查找。
重复上述过程,直到查找成功;当begin,end表示范围无效时,查找失败
private static void binarySearch2(int[] keys,int key){
// 二分法,从中间值开始比较,比较值缩小范围。
int begin = 0; // 指向开头的指针
int end = keys.length-1; // 指向结尾的指针
int mid = (begin + end)/2; // 数组的中间值
while ( begin <= end){ // 边界有效
if( keys[mid] == key ){ // 子序列的中间值 mid 等于 key值
System.out.println("mid: "+mid); //输出 mid
break;
}
if( keys[mid] > key){ //查找范围缩小到前半段
end = mid-1;
}else if(keys[mid] < key){ // 查找范围缩小到后半段
begin = mid+1;
}
mid = (begin + end)/2;
}
if( keys[mid] != key ){
System.out.println("-1"); // 查找不成功
}
}
从中间值开始比较,比较值缩小范围.