Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中进行二进制搜索 公共类阵列实用性{ 公共静态void main(字符串[]args){ int[]数组1={1,2,3,4,5,10,15,30,32}; int target1=30; System.out.println(二进制搜索(array1,target1)); } 公共静态布尔二进制搜索(int[]数组,int目标){ int左=0; int right=array.length-1; while(右>=左){ int middle=(右-左)/2; if(目标==数组[中间]){ 返回true; }else if(目标>数组[中间]){ 左=中-1; }else if(目标数组[中间]){ left=middle-1;应该是left=middle+1;记住,您需要在数组的下一部分找到数字 类似地考虑这里的逻辑;否则,如果(目标_Java_If Statement_Binary Search - Fatal编程技术网

如何在java中进行二进制搜索 公共类阵列实用性{ 公共静态void main(字符串[]args){ int[]数组1={1,2,3,4,5,10,15,30,32}; int target1=30; System.out.println(二进制搜索(array1,target1)); } 公共静态布尔二进制搜索(int[]数组,int目标){ int左=0; int right=array.length-1; while(右>=左){ int middle=(右-左)/2; if(目标==数组[中间]){ 返回true; }else if(目标>数组[中间]){ 左=中-1; }else if(目标数组[中间]){ left=middle-1;应该是left=middle+1;记住,您需要在数组的下一部分找到数字 类似地考虑这里的逻辑;否则,如果(目标

如何在java中进行二进制搜索 公共类阵列实用性{ 公共静态void main(字符串[]args){ int[]数组1={1,2,3,4,5,10,15,30,32}; int target1=30; System.out.println(二进制搜索(array1,target1)); } 公共静态布尔二进制搜索(int[]数组,int目标){ int左=0; int right=array.length-1; while(右>=左){ int middle=(右-左)/2; if(目标==数组[中间]){ 返回true; }else if(目标>数组[中间]){ 左=中-1; }else if(目标数组[中间]){ left=middle-1;应该是left=middle+1;记住,您需要在数组的下一部分找到数字 类似地考虑这里的逻辑;否则,如果(目标,java,if-statement,binary-search,Java,If Statement,Binary Search,每当我运行代码时,它不会打印任何内容,也不会说错误。我不明白为什么。 请帮忙! 提前谢谢。算法没有正确执行 您的代码正在运行一个无限循环 考虑的地方: intmiddle=(右-左)/2应该是intmiddle=(右+左)/2 else if(目标>数组[中间]){ left=middle-1;应该是left=middle+1;记住,您需要在数组的下一部分找到数字 类似地考虑这里的逻辑;否则,如果(目标

每当我运行代码时,它不会打印任何内容,也不会说错误。我不明白为什么。 请帮忙!
提前谢谢。

算法没有正确执行

您的代码正在运行一个无限循环

考虑的地方:

  • intmiddle=(右-左)/2应该是
    intmiddle=(右+左)/2
  • else if(目标>数组[中间]){ left=middle-1;应该是
    left=middle+1;
    记住,您需要在数组的下一部分找到数字

  • 类似地考虑这里的逻辑;否则,如果(目标<数组[中间]){ 右=中间+1;}


    Arrays.binarySearch有什么问题?()这是一个家庭作业,我不能使用任何库方法,但无论如何谢谢你!你错了,它至少输出
    true
    false
    ,你可以使用调试器查看执行过程中发生的情况,除非算法实现错误并且存在无限循环(因为它不是递归的,所以不会抛出错误)你的左右移动是错误的direction@user2826974当然没问题。一定要接受答案,结束问题。
    public class ArrayUtilities {
        public static void main(String[] args) {
            int[] array1 = { 1, 2, 3, 4, 5, 10, 15, 30, 32 };
            int target1 = 30;
            System.out.println(binarySearch(array1, target1));
        }
    
        public static boolean binarySearch(int[] array, int target) {
            int left = 0;
            int right = array.length - 1;
            while (right >= left) {
                int middle = (right - left) / 2;
                if (target == array[middle]) {
                    return true;
                } else if (target > array[middle]) {
                    left = middle - 1;
                } else if (target < array[middle]) {
                    right = middle + 1;
                }
            }
            return false;
        }
    }