首页 > 代码库 > Binary Search

Binary Search

Binary Search 模版

四种结构

    public static int BinarySearch(int[] array, int target){        int left = 0;        int right = array.length - 1;        int mid = left + (right - left) / 2;        while(left <= right){            mid = left + (right - left) / 2;            if(array[mid] > target){                right = mid - 1;            }             else                left = mid + 1;        }        return right;    } // rightyes + noleft            public static int BinarySearchLeft(int[] array, int target){        int left = 0;        int right = array.length - 1;        int mid = left + (right - left) / 2;        while(left <= right){            mid = left + (right - left) / 2;            if(array[mid] < target){                left = mid + 1;            }             else                right = mid - 1;        }        return left;    } //leftyes rightNo        //    recursive    public static int RecursiveBinarySearchLeft(int[] array, int target, int left, int right){        if(left > right){            return left;        }        int mid = (left +  right) / 2;        if(target > array[mid])            return RecursiveBinarySearchLeft(array, target, mid + 1, right);        else            return  RecursiveBinarySearchLeft(array, target, left, mid - 1);    }        public static int RecursiveBinarySearchRight(int[] array, int target, int left, int right){        if(left >= right){            return right;        }        int mid = (left +  right) / 2;        if(target < array[mid])            return  RecursiveBinarySearchLeft(array, target, left, mid - 1);        else            return RecursiveBinarySearchLeft(array, target, mid + 1, right);                }

 

Binary Search