Java 使用数据集进行二进制搜索
我需要帮助返回其中一个集合(数据集3)中的特定数据。我已将扫描仪导入以下代码:Java 使用数据集进行二进制搜索,java,dataset,binary-search,Java,Dataset,Binary Search,我需要帮助返回其中一个集合(数据集3)中的特定数据。我已将扫描仪导入以下代码: public static int binarySearch(int[] list, int key) { int low = 0; int high = list.length - 1; while (high >= low) { int mid = (low + high) / 2; if (key < list[mid])
public static int binarySearch(int[] list, int key) {
int low = 0;
int high = list.length - 1;
while (high >= low) {
int mid = (low + high) / 2;
if (key < list[mid])
high = mid - 1;
else if (key == list[mid])
return mid;
else
low = mid + 1;
}
return -low - 1;
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int set = in.nextInt();
int key = in.nextInt();
int[][] datasets = {
{ },
{ 1, 2, 3, 5, 8, 13, 21, 34, 55, 89 },
{ -81, -72, -63, -54, -45, -36, -27, -18, -9, 0 },
{ 21, 34, 72, -63, 8, 5, -13, -27, -18, 1, 0, 2 }
};
System.out.println("Searching for key " + key +
" in data set " + set +
" returned " + binarySearch(datasets[set], key));
}
公共静态int二进制搜索(int[]列表,int键){
int低=0;
int高=list.length-1;
而(高>=低){
int mid=(低+高)/2;
如果(键<列表[mid])
高=中-1;
else if(key==list[mid])
中途返回;
其他的
低=中+1;
}
返回-低-1;
}
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(系统输入);
int set=in.nextInt();
int key=in.nextInt();
int[][]数据集={
{ },
{ 1, 2, 3, 5, 8, 13, 21, 34, 55, 89 },
{ -81, -72, -63, -54, -45, -36, -27, -18, -9, 0 },
{ 21, 34, 72, -63, 8, 5, -13, -27, -18, 1, 0, 2 }
};
System.out.println(“搜索键”+键+
“数据集内”+数据集+
“返回”+二进制搜索(数据集[set],键));
}
}
我需要为键=5和设置=3返回7
预期输出:“搜索数据集3中的键5返回7”
当前输出:“搜索数据集3中的键5返回-1”
我还需要为key=0和set=3返回4 预期输出:“搜索数据集3中的键0返回4” 当前输出:“搜索数据集3中的键0返回-1”
我是应该在某个地方写一条语句来解决这个问题,还是只是更改数据集3中的数字 二进制搜索在数据已排序时起作用。你的数据没有排序,所以我只能按升序排列?更新:成功了,谢谢!