使用二分查找法,查找数据中的某一个值。文章借鉴地址:https://blog.csdn.net/ArtemisC/article/details/82254752
package com.app;
/*
* @param:使用二分查找法,查找数据中的某一个值。(也成折半查找)
* 注意:使用二分查找法时,必须保证数组是有序的
*
* */
public class binarySearch {
//使用非递归二分查找法
public static int BinarySearch(int[] srcArray,int des) {
int low= 0;//定义第一个位置
int high = srcArray.length-1;//定义最高位置,数组长度-1,因为数组的下标都是0开始的
while(low<=high) {
//中间位置计算,low+,最高位置减去最低位置,右移一位,
//相当于除2,也可以用(high+low)/2
int middle=low+((high-low)>>1);
//与最中间的数字进行判断,是否相等,相等的话就返回对应的数字下标
if(des==srcArray[middle]) {
return middle;
}else if(des<srcArray[middle]) {//如果小于的话则移动最高层的“指针”
high=middle-1;
}else {//移动最低的“指针”
low=middle+1;
}
}
return -1;
}
//使用递归方法实现二分查找法
/**
* @param Array数组
* @param lows数组第一位置
* @param high最高
* @param key 要查找的值
* @return 返回值
*
* */
int BinSearch(int Array[],int low,int high,int key) {
if(low<=high) {
int mid = (low+high)/2;
if(key == Array[mid])
return mid;
else if(key<Array[mid])
return BinSearch(Array,low,mid-1,key);
else if(key>Array[mid])
return BinSearch(Array,mid+1,high,key);
}
return -1;
}
}