Java 使用数据集进行二进制搜索

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])

我需要帮助返回其中一个集合(数据集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])
            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=0set=3返回4

预期输出:“搜索数据集3中的键0返回4”

当前输出:“搜索数据集3中的键0返回-1”



我是应该在某个地方写一条语句来解决这个问题,还是只是更改数据集3中的数字

二进制搜索在数据已排序时起作用。你的数据没有排序,所以我只能按升序排列?更新:成功了,谢谢!