50,523
社区成员
发帖
与我相关
我的任务
分享
1 V = L/2
f(V,L){ f(V,L-L/4) V>L/2 }
f(V,L/4) V<L/2
public class Test3
{
public static void main(String[] args)
{
int arr[] = { 2, 5, 7, 12, 25};
BinaryFind bf = new BinaryFind();
int result=bf.find(0, arr.length, 25, arr);
String end=result>0 ? " 找到目标 下标是: " +result: "没有找到目标!!!";
System.out.println(end);
}
}
class BinaryFind
{
static int result=0;//保存返回结果
public int find(int leftIndex, int rightIndex, int val, int arr[])
{
int midIndex = (rightIndex + leftIndex) / 2;
int midVal = arr[midIndex];
if (leftIndex > rightIndex)
{
return 0;
}
if (midVal > val)
{
find(leftIndex, midIndex - 1, val, arr);
}
else if (midVal < val)
{
find(midIndex + 1, rightIndex, val, arr);
}
else if (midVal == val)
{
System.out.println("找到正确下标:" + midIndex);
System.out.println("执行到这儿了吗?"); //输出放在这里就不会输出多个.(找到时输出一次,找不到一次不执行).
result=midIndex; //找到下标赋给result.
}
return result;
}
}