【发布时间】:2020-01-16 05:19:52
【问题描述】:
我正在处理一项任务。 我必须创建的是一种在数组中搜索特定 int 的方法。假设数组已经从最低到最高排序。但条件是它必须通过将所述数组切成两半并检查目标数字在哪一半中进行搜索,然后再将所述一半切成两半,依此类推。
我们也被要求不要使用递归方法。
这是我想出的代码,但我看不到我的错误,任何有助于更好地理解问题的帮助都非常感激!!!
public static boolean SearchInHalf(int[] array, int targetint)
{
int fin = array[array.length-1];
int init = array[0];
int range = fin-init;
if ( targetint>array[array.length-1] || targetint< array[0])
{
return false;
}
while (range>=2)
{
int half = array[range/2];
if (targetint>half)
{
init = half;
range = fin-init;
half = array[range/2];
}
else if (targetint<half)
{
fin = half;
range = fin-init;
half = array[range/2];
}
else if (targetint==half || targetint==fin || targetint==init)
{
return true;
}
}
return false;
}
【问题讨论】:
-
一方面,您的范围变量包含数组中实际包含的值的范围。您不应该使用它来取消引用您的数组。
标签: java arrays algorithm search