算法描述
在有序的N个数中,每次进行二分比较mid的数和要查找的数据的大小,等于直接返回,大于R = mid-1,小于L = mid+1;没有找到就返回-1
算法实现
public static void main(String[] args) {
int[] arr = {1,2,3,4,5,6,7,8,9};//定义一个数组
int sData = 1;//需要搜索的数据
int retu = -1;//返回找到数据的下标,没有找到返回-1
int L=0,R= arr.length;//定义左右两个边界
while (L<=R){
int mid = L+(R-L)/2;//进行二分,使用这种方式防止L+R大于int.max_value
if (arr[mid]==sData){
retu = mid;
break;
}
if (arr[mid]>sData){
R = mid-1;
}
if (arr[mid]<sData){
L = mid+1;
}
}
System.out.println(retu);
}