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

时间:2017-10-01 21:22:15

标签: java arrays algorithm data-structures binary-search

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

for Instance if 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;
}

由于

1 个答案:

答案 0 :(得分:0)

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

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

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

也许,更好的方法是使用Binary Tree