Java 使用分治检查排序数组是否有[i]=i
我得到了一个具有不同元素的排序数组 如果A[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
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问题指定了“具有不同元素的排序数组”(重点是我的);因此,您的两个测试用例都无效。