Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.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/4/algorithm/11.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 使用分治检查排序数组是否有[i]=i_Java_Algorithm_Divide And Conquer - Fatal编程技术网

Java 使用分治检查排序数组是否有[i]=i

Java 使用分治检查排序数组是否有[i]=i,java,algorithm,divide-and-conquer,Java,Algorithm,Divide And Conquer,我得到了一个具有不同元素的排序数组 如果A[i]=i,则返回true else return false; 我被要求只返回真或假,而不是职位 我已经实现了代码,但是有一些小错误 private static boolean find(int[] a, int low, int high) { System.out.println(Arrays.toString(a)+" "+low+ " "+high); if(low<=high) { int

我得到了一个具有不同元素的排序数组

如果A[i]=i,则返回
true

else return false;
我被要求只返回真或假,而不是职位

我已经实现了代码,但是有一些小错误

private static boolean find(int[] a, int low, int high) 
{
    System.out.println(Arrays.toString(a)+" "+low+ " "+high);
    if(low<=high)
    {
        int mid = (low+high)/2;

        if(mid==a[mid])
        {
            return true;
        }
        else if(a[mid]>mid)
        {
            find (a,low,mid-1);
        }
        else{
            find (a,mid+1,high);
        } 

    }

    return false;


}
private静态布尔查找(int[]a,int-low,int-high)
{
System.out.println(Arrays.toString(a)++''+低+''+高);
中频(低中频)
{
查找(a、低、中1);
}
否则{
查找(a、中+1、高);
} 
}
返回false;
}
我知道它达到
返回false
,即使它找到了mid


我应该做哪些更改,以使其在所有情况下都返回true。

在递归调用find时,在调用find之前应该有一个返回,以便它将返回嵌套调用的结果

return find(...) //etc..

你的代码有错误

检查testcase0:[1,1,2,3,4,5,6,7]和testcase1=[1,2,3,4,5,6,6] 您的代码适用于testcase1,而不适用于testcase0

因为对于testcase1,mid是3,4>3,然后跳过包含答案的[5,6,6]!!!!
希望这会有帮助

哦,我的天。。谢谢:D问题指定了“具有不同元素的排序数组”(重点是我的);因此,您的两个测试用例都无效。