★ 十分查找算法的基本思想:
● 前提: 有序数组
● 基本思想: 对一个有序数组,定义三个游标:lowerBound(指向数组的第一个位置),upperBound(指向数组的最后一个位置),然后依次循环取current(当前数组中间那个位置),比较所要查找的值searchValue与arr[current](当前数组中间位置的那个值)的关系,如果arr[current]==searchValue,则返回current;如果lowerBound>upperBound,则表示数组中不存在所要查找的那个值,我们用数组的长度来作为返回值,如果arr[current]>searchValue,则将upperBound=current-1,否则lowerBound= current+1
public int binarySearch(long searchValue){
int lowerBound = 0;
int higherBound = this.getLen()-1;
int current = 0;
while(true){
current = (lowerBound+higherBound)/2;
if(this.getElement(current) == searchValue){
return current;
}else if(lowerBound > higherBound){
return this.getLen();
}else{
if(this.getElement(current) > searchValue){
higherBound = current - 1;
}else{
lowerBound = current + 1;
}
}
}
}