/**
* @author jesse
* @Classname SerachByHalf
* @Description TODO
* @Date 2019/12/18 10:35
* @Created by victorydeng
*/
public class SerachByHalf {
public static void main(String[] args) {
int [] a = {1,2,3,4,5};
int target = 2;
int index = SerachByHalf.searchByHalf(a, target);
System.out.println("==search result==="+index);
}
public static int searchByHalf(int[] arry, int target){
//待查找数组的左标
int left = 0;
//待查找数组的右标
int right = arry.length-1;
while(left <= right){
int mid = (right+left)/2;
if(arry[mid] == target){
//目标元素和数组中部元素相等直接返回索引
return mid;
} else if(arry[mid] > target) {
//目标元素小于数组中部元素,元素处在拆分成2半数组的左侧,将右边的边界值换成当前中部元素向左移动一个
right = mid -1;
} else {
//目标元素大于数组中部元素,元素处在拆分成2半数组的右侧,将左边的边界值换成当前中部元素向右移动一个
left = mid +1;
}
}
//没有匹配元素时返回-1
return -1;
}
}