当前位置 博文首页 > Inmaturity_7的博客:二分查找数组中对应值的下标(Java)
package com.lxf.demo03;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/**
* 二分查找数组中对应值的下标
* 针对的是有序数组,快速查找
*/
public class BinSearch {
public static void main(String[] args) throws IOException {
int[] a=new int[]{1,2,3,4,5,6,7,8,9,10};
//获取输入的要查找的数
System.out.println("请输入您要查找的值:");
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int num = Integer.valueOf(br.readLine());
//查找这个数
int i = BinSearch(a, 0, a.length - 1, num);
if(i>=0){
System.out.println(num+"值在数组中对应的下标:"+i);
}else{
System.out.println("该数不存在!");
}
}
public static int BinSearch(int[] a,int low,int high,int k){
//中间值
int mid;
if(low<=high){
mid=(low+high)/2;
if(a[mid]==k){
//如果中间值等于k,查找结束,返回mid
return mid;
}
if(a[mid]>k){
//如果a[mid]大于k,查找左区间
return BinSearch(a, low, mid-1, k);
}else{
//如果a[mid]小于k,查找右区间
return BinSearch(a, mid+1, high,k);
}
}else{
return -1;
}
}
}
cs