Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用二进制搜索查找数组中的插入点_Java_Arrays_Algorithm_Data Structures_Binary Search - Fatal编程技术网

Java 使用二进制搜索查找数组中的插入点

Java 使用二进制搜索查找数组中的插入点,java,arrays,algorithm,data-structures,binary-search,Java,Arrays,Algorithm,Data Structures,Binary Search,我需要修改以下代码以使用二进制搜索返回排序数组中插入点的索引 例如,如果objArray={1,2,4}和searchObj=3 binarysearch函数应返回2作为插入3的索引 public int binarySearch(Comparable[] objArray, Comparable searchObj) { int low = 0; int high = objArray.length - 1; int mid = 0; while (low &l

我需要修改以下代码以使用二进制搜索返回排序数组中插入点的索引

例如,如果objArray={1,2,4}和searchObj=3

binarysearch函数应返回2作为插入3的索引

public int binarySearch(Comparable[] objArray, Comparable searchObj)
{
    int low = 0;
    int high = objArray.length - 1;
    int mid = 0;
    while (low <= high)
    {
        mid = (low + high) / 2;
        if (objArray[mid].compareTo(searchObj) < 0)
        {
            low = mid + 1;
        }
        else if (objArray[mid].compareTo(searchObj) > 0)
        {
            high = mid - 1;
        }
        else
        {
            return mid;
        }
    }
    return -1;
}
public int-binarySearch(compariable[]objArray,compariable-searchObj)
{
int低=0;
int high=objArray.length-1;
int-mid=0;
while(低0)
{
高=中-1;
}
其他的
{
中途返回;
}
}
返回-1;
}

谢谢

您的代码是一个二进制搜索,它返回元素的索引,如果元素根本不存在,则返回-1

如果您只需要返回应该插入的索引,那么您应该更改您的行
return-1
返回中间

但是请记住,这种方法将返回该元素的索引或应该插入该元素的索引。因此,您需要另一个测试来确定该项是否已存在于数组中


也许,更好的方法是使用。

从缩进代码开始,这样您(和我们)就可以阅读它。然后,问一个问题,“我需要修改下面的代码…”修改进展如何?你遇到路障了吗?你能解释一下是什么输入导致你的方法出现故障吗?想想在代码的第一次迭代后会发生什么。你能马上得到答案吗?澄清一下,当你说“我需要修改下面的代码”时,你的意思是“我需要有人修改下面的代码”吗?(如果是这样的话,你不会在这里找到那个人。)请看我的答案: