//Java. public class Solution{ //if not found, return -1; public int binary_search(int[] array, int n){ if (array == null || array.length < 1) return -1; //不需要寻找. int top = 0, button = array.length - 1; while (top <= button){ int mid = top + (button - top) / 2; if (n < array[mid]){ //n在数组左边. button = mid - 1; }else if (n > array[mid]){ //n在数组右边. top = mid + 1; }else { return mid; //find. } } } }
private static int MyBinarySearch(int[] arr , int key){ //先创建两个索引值,前边的索引和后边的索引,来 规定查找的界限 int before = 0; int back = arr.length-1; while(back >before){ //创建一个中间值索引 int mid = (back+before)/2; if(arr[mid] > key){ back = mid-1; }else if(arr[mid] < key){ before = mid+1; }else{ return mid; } } return back; }
defbinarySearch(array, left, right, target):middle =(left +right)/2ifarray[middle] ==target:returnmiddleelifarray[middle]>target:returnbinarySearch(array, left, middle-1, target)elifarray[middle]<target:returnbinarySearch(array, middle+1, right, target)