二分查找法

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