package com.xinxue.serch;
public class Test {
public static int commonBinarySearch(int[] arr,int key){
int low = 0; //最低位
int high = arr.length-1;//最高位 不减一的话 会出现下表越界
int middle = 0; //定义middle
//当查找的数 大于 小于最高位和最低位的时候 以及最低位大于最高位的时候 都不存在
if(key < arr[low] || key > arr[high] || low > high){
return -1;
}
while(low <= high){
middle = (low + high) / 2;
if(arr[middle] > key){
//查找的数比中间数小
high = middle - 1;
}else if(arr[middle] < key){
//查找的数比中间数大
low = middle + 1;
}else{
return middle;
}
}
return -1; //最后仍然没有找到,则返回-1
}
public static void main(String[] args) {
int[] arr = {1,3,5,7,9,11};
int key = 11;
int position = commonBinarySearch(arr, key)+1; //不加1 则按0下表开始搜索
if(position == -1){
System.out.println("查找的是"+key+",序列中没有该数!");
}else{
System.out.println("查找的是"+key+",找到位置为:"+position);
}
}
}
java 二分查找法
最新推荐文章于 2021-02-12 10:12:29 发布