二分查找法

    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      
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章