int array[] = {1, 3, 6, 7, 9, 11, 18, 21, 25, 26, 33, 35, 36};
int searchIndex = binarySearch(array, 0, array.length, 65);
System.out.println("查找出的结果 " + searchIndex);
/**
* @param array 查找的数据
* @param fromIndex 开始的起点
* @param toIndex 到中点
* @param key 查找的内容
* @return 二分查找法 必须建立在有序的基础上
*/
public int binarySearch(int array[], int fromIndex, int toIndex, int key) {
int low = fromIndex;
int high = toIndex -1;
while (low <= high) {
int mid = (high+low) >>1;// 等同于 (high+low)/2
int minValue=array[mid];
//需要查找的值 小于 当前值 高位指针移动
if (minValue > key) {
high = mid -1;
}else if (minValue
//需要查找的值 大于 当前值 低位指针移动
low=mid+1;
}else{
//两个值相等 返回当前位置
return mid;
}
}
return -1;
}
网友评论