第一中实现:
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; } }