为什么我的二进制搜索陷入无限循环?

Why is my Binary search stuck in an endless loop?

我不得不突然出现在这里,希望能快速回答我的小问题。我正在尝试创建一个二进制搜索方法,但 运行 遇到了一些问题。我反复创建它,我的 IDE(Intellij) 显然不喜欢。它让我陷入了一个无休止的循环......好吧,你知道其余的。有什么建议吗?

这是我的简单但漂亮的小代码片段:

static int searchIt(int[] arr, int target){    
    int left = 0;                              
    int right = arr.length - 1;                
    while (left <= right){                     
        int mid = (right + left) / 2;          
        if(arr[mid] == target) {               
            return mid;                        
        } else if(target < arr[mid]){          
            right = mid-1;                     
        } else{                                
            left = mid -1;                     
        }                                      
    }                                          
    return -1;                                 
}                                              

没有错误,不是在运行时或编译时,只是无尽的虚无...

左边的值应该是 mid + 1,因为如果中间的目标值大于中间值,那么您需要在数组的后半部分搜索元素

static int searchIt(int[] arr, int target){    
    int left = 0;                              
    int right = arr.length - 1;                
    while (left <= right){                     
        int mid = (right + left) / 2;          
        if(arr[mid] == target) {               
            return mid;                        
        } else if(target < arr[mid]){          
            right = mid - 1;                     
        } else{                                
            left = mid + 1;                     
        }                                      
    }                                          
    return -1;                                 
}