8-1 二分法

1、经典二分查找:跳出循环end在start右边

class Solution{
    public int binarySearch(int[] arr,int target){
        if(arr==null || arr.length==0){
            return -1;
        }
        
        int start = 0,end= arr.length-1;
        while(start<=end){
            int mid = start + (end-start)/2;
            if(arr[mid]==target){
                return mid;
            }else if(target

2、常见的二分查找写法:跳出循环start=end,需要检查start or end是否等于target

class Solution{
    public int binarySearch(int[] arr,int target){
        if(arr==null || arr.length==0){
            return -1;
        }
        
        int start = 0,end= arr.length-1;
        while(start

三、更加有用的二分查找模板:跳出循环,剩下2个数,需要检查start和end,特点是:区间缩小时包含mid

class Solution{
    public int binarySearch(int[] arr,int target){
        if(arr==null || arr.length==0){
            return -1;
        }
        
        int start = 0,end= arr.length-1;
        while(start+1

 

你可能感兴趣的:(数据结构与算法)