public static void main(String[] args) {
int[] nums={30,40,60,70,90,100};
int idx=binarySearch(nums,60);
if(idx==-1){
System.out.println("没有找到");
}else{
System.out.println("数字的位置是:"+idx);
}
}
public static int binarySearch(int[] nums,int num){
int low = 0;
int high = nums.length-1;
while(low<=high&&low<=nums.length-1&&high<= nums.length-1){
int mid = (high+low)/2;//计算中间位置mid = (L+H)/2
if(num==nums[mid]){//传入的数字和中间的数字进行比较
return mid;//查找到了,返回
}else if(num<nums[mid]){
high = mid - 1;//比中间数小,在左边查,将high的值往原mid的左边移一位,就是以原mid的值左边一位为high值
}else if(num>nums[mid]){
low = mid + 1;//比中间数大,在右边查,将low的值往原mid的右边移一位,就是以原mid的值右边一位为low值
}
}
return -1;//没有查找到,返回-1
}
二分查找法
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.