Java 对于元素为';t found,如何返回应该插入的索引

Java 对于元素为';t found,如何返回应该插入的索引,java,algorithm,Java,Algorithm,我想使用二进制搜索来查找元素应该放置在的数组索引。这是为了在向下移动较大的元素时将元素插入数组。如何修改此二进制搜索以指定未找到元素的位置 int binarySearch(int arr[], int x) { int low = 0; int mid = 0; int high = arr.length - 1; while (low <= high) { mid = (low + hig

我想使用二进制搜索来查找元素应该放置在的数组索引。这是为了在向下移动较大的元素时将元素插入数组。如何修改此二进制搜索以指定未找到元素的位置

    int binarySearch(int arr[], int x) {

        int low = 0;
        int mid = 0;
        int high = arr.length - 1;
        while (low <= high) {
            mid = (low + high) / 2;
            if (x < arr[mid]) {
                high = mid - 1;
            } else if (x > arr[mid]) {
                low = mid + 1;
            } else {
                return mid;
            }
        }
        //This is what im trying to get to work
        if (x < arr[mid]) {
            return high;
        } else {
            return low;
        }
    }
int二进制搜索(int-arr[],int-x){
int低=0;
int-mid=0;
int高=阵列长度-1;
而(低arr[中]){
低=中+1;
}否则{
中途返回;
}
}
//这就是我努力工作的目的
如果(x

谢谢。

看看java.util.Arrays.binarySearch()是如何做到的。

看看java.util.Arrays.binarySearch()是如何做到的。

Arrays.binarySearch()返回
-(插入点+1)
。这样,就可以返回值≥ 0是命中,返回值<0是未命中,带有
insertion\u point=-return\u value-1
数组。binarySearch()返回
-(insertion\u point+1)
。这样,就可以返回值≥ 0是命中和返回值< 0是错误的,用<代码>插入式点= -ReTrutyValue- 1 < /C> > < /P> < P>查看并在C++标准模板库中。这些链接指向规范;实现是在同一个网站的实现部分中的文件STLIGALGO.H中,但我是一个新用户,因此一次不能允许超过两个URL。

< P>查看和在C++标准模板库中。这些链接指向规范;实现在同一网站的实现部分的stl_algo.h文件中,但我是新用户,因此不允许一次发布两个以上的URL。

-(x+1)=~x=-x-1
,仅供参考:)和
-(x+1)=~x=-x-1
,仅供参考:)