当前位置 博文首页 > Inmaturity_7的博客:二分查找数组中对应值的下标(Java)

    Inmaturity_7的博客:二分查找数组中对应值的下标(Java)

    作者:[db:作者] 时间:2021-08-01 14:50

    二分查找数组中对应值的下标(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
    下一篇:没有了