思路:
一个有序的数组,首先找出中间位置元素,与要查找的元素进行比较
如果要查找的元素比中间位置元素大,则该元素位于中间元素的右边,继续查找,此时左边界应为中间元素位置索引+1;(索引不是-1的原因是减小查找区间,查找时是闭区间)
如果要查找的元素比中间位置元素小,则该元素位于中间元素的左边,继续查找,此时有边界应为中间元素位置索引-1;
一次循环,直至找到该元素。
下面是代码实现
int min=0;
int max=arr.length-1;//索引
//当min>max时,表示arr内没有数据
while (min<=max){//()内是真继续循环,为假结束循环
int mid=(min+max)/2;
if(arr[mid]>num){
//表示num在左侧
max=mid+1;
}else if(arr[mid]<num){
//表示num在右侧
min=mid-1;
}else {
//arr[min]==num
return mid;
}
}
return -1;
}