java 实现二分查找 查找有序数组中的某一元素
话不多说,直接上代码
/**
* @param arr 传递数组
* @param key 查找的值
* @return 返回值的索引
*/
public static int test(int [] arr,int key){
int low = 0; //索引开始的位置
int high = arr.length -1; //数组的长度
int middle = 0; //查找指定元素的索引位置
while (low <= high){
//获得初始数组的中间值
middle = (low + high) / 2 ;
//从中间值开始比较传入的key值 大于则 -1
if (arr[middle] > key){
high = middle - 1 ;
//从中间值开始比较传入的key值 小于则 +1
}else if (arr[middle] < key){
low = middle + 1 ;
}else{
//当没进if条件时则代表值相等,直接返回即可
return middle;
}
}
//当查找的值不存在时返回 -1
return -1 ;
}
调用方法测试
int [] arr = {10,20,55,8,17};
int key = 55;
int test = test(arr, key);
if(test == -1){
System.out.println("查找的是"+key+",序列中没有该数!");
}else{
System.out.println("查找的是"+key+",找到位置为:"+test);
}
打印结果
有问题欢迎评论区讨论!