【发布时间】:2023-01-22 19:59:46
【问题描述】:
import java.util.*;
public class practice
{
public static void main(String[] args) {
char[] arr ={'c','f','j'};
char target = 'c';
System.out.println(search(arr,target));
}
static char search(char[] arr, char target)
{
int start =0;
int end = arr.length-1;
while(start<=end)
{
int middle = start+(end-start)/2;
if(target>arr[middle])
{
start = middle+1;
}
else
{
end = middle-1;
}
}
return arr[start% arr.length];
}
}
这是给'c'作为输出
根据编码平台的预期输出是“f” 可以通过下面的附加代码获得。
import java.util.*;
public class practice
{
public static void main(String[] args) {
char[] arr ={'c','f','j'};
char target = 'c';
System.out.println(search(arr,target));
}
static char search(char[] arr, char target)
{
int start =0;
int end = arr.length-1;
while(start<=end)
{
int middle = start+(end-start)/2;
if(target<arr[middle])
{
end = middle-1;
}
else
{
start = middle+1;
}
}
return arr[start% arr.length];
}
}
这是给'f'作为输出
我无法理解这种二进制搜索方法,为什么在这两种情况下我的答案都不一样,我无法注意到程序的流程。
【问题讨论】:
标签: java binary-search