M87星云

导航

二分查找算法

第一中实现:

public static int commonBinarySearch(int[] arr,int key){
    int min= 0;
    int max= arr.length - 1;
    int middle = 0;        //定义middle
        
    if(key < arr[min] || key > arr[max] || min> max{
        return -1;                
    }
        
    while(min <= max){
        middle = (min + max) / 2;
        if(arr[middle] > key){
            //比关键字大则关键字在左区域
            max= middle - 1;
        }else if(arr[middle] < key){
                //比关键字小则关键字在右区域
            min= middle + 1;
        }else{
            return middle;
        }
    }
        
    return -1;    //最后仍然没有找到,则返回-1
}

 

第二种实现:

/**
* 二分查找算法
* @param args
*/
public static void main(String[] args) {

  int []arr = {1,2,3,4,5,6,7,8,9,10,12,14,15};

  int min = 0;
  int max = arr.length-1;
  int mid = (min + max) / 2;

  int n = 15;

  for (int i = 0; i < arr.length; i++) {
    if(arr[mid] < n) {
      min = mid + 1;
    }else if(arr[mid] > n) {
      max = mid - 1;
    }else {
      System.out.println("查找结果为:"+ arr[mid]+",下表为: "+mid);
      break;
    }
    mid = (max + min) / 2;
  }

}

 

posted on 2019-12-05 15:49  挽留匆匆的美丽  阅读(86)  评论(0编辑  收藏  举报