Java:搜索数组中最接近的值

海王星

我有一个大尺寸的有序双精度数组,例如:

[2.1,3.4,3.6,4.1]

现在,我以某种方式生成一个双数,例如:

3.51

我需要在Java中创建一个函数,该函数获取数组和数字,并在此数字的数组中给我最接近的值。在这个例子中3.6。

我怎样才能最有效地做到这一点?因为我可以有300000 double的数组,并且需要经常执行此操作。然后,我无法进行简单的比较。

编辑:我已经做到了,在某些测试中结果是正确的,对你来说是正确的吗?

        int pos = Arrays.binarySearch(allTime.times, value);
        double out;

        if(pos >= 0)
        {
//          System.out.println(allTime.times[pos]);
            out = allTime.times[pos];
        }
        else if(pos == -1)
        {
//          System.out.println(allTime.times[0]);
            out = allTime.times[0];
        }
        else
        {
            int insertionPoint = -pos-1;
            if(insertionPoint < allTime.times.length)
            {
                if(allTime.times[insertionPoint] - value < value - allTime.times[insertionPoint-1])
//                  System.out.println(allTime.times[insertionPoint] );
                    out = allTime.times[insertionPoint];
                else
//                  System.out.println(allTime.times[insertionPoint-1] );
                    out = allTime.times[insertionPoint-1];
            }
            else
//              System.out.println(allTime.times[allTime.times.length -1]);
                out = allTime.times[allTime.times.length -1];
        }
达兰

Jimmy T的答案没有处理特殊情况,例如搜索数是否在第0个索引之前,或者是否超出了最后一个索引。

这是更正的一个

     double searchNearest(double[] array, double searchNumber) {
    int pos = Arrays.binarySearch(array, searchNumber);
    if (pos >= 0)
        return searchNumber;
    else {
        int insertionPoint = -pos - 1;
        if (insertionPoint > 0 && insertionPoint < array.length) {
            if ((searchNumber - array[insertionPoint - 1]) < (array[insertionPoint] - searchNumber)) {
                return array[insertionPoint - 1];
            } else {
                return array[insertionPoint];
            }

        } else {

            return insertionPoint == 0 ? array[0] : array[array.length - 1];
        }
    }

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Java:搜索数组中最接近的值

来自分类Dev

返回数组中最接近值的索引

来自分类Dev

搜索值最接近N的数组的索引-Java

来自分类Dev

推断numpy数组中最接近的较小值

来自分类Dev

如何从POJO属性中找到Java中最接近的值?

来自分类Dev

获取数组中最接近的数字

来自分类Dev

合并SAS中最接近的值

来自分类Dev

如何获得列表中最接近的值?

来自分类Dev

从元素数组中查找T-SQL中最接近的值

来自分类Dev

将数字四舍五入到Java数组中最接近的最高数字

来自分类Dev

搜索排序的List <Long>中最接近且小于

来自分类Dev

搜索最接近的值的核心数据

来自分类Dev

从用户位置查找数组中最接近的经度和纬度

来自分类Dev

将数组中最接近的元素返回为整数的函数

来自分类Dev

查找数组中最接近的较高和较低的数字

来自分类Dev

从用户位置查找数组中最接近的经度和纬度

来自分类Dev

从 Python 中排序的数组中最接近的数字返回索引

来自分类Dev

加速循环以用另一个数组中最接近的值填充数组

来自分类Dev

.bisect找不到字典中最接近的值

来自分类Dev

同一向量中最接近的其他值

来自分类Dev

使用MATLAB中最接近的值匹配列元素

来自分类Dev

如何在Matlab数组中数字搜索所有最接近零的值?

来自分类Dev

排序值最接近1的数组

来自分类Dev

从数组获取数字的最接近值

来自分类Dev

按最接近的值对数组排序

来自分类Dev

Java的ByteBuffer在C#中最接近的对等物?

来自分类Dev

使用Java流查找集合中最接近的对

来自分类Dev

在链表中搜索最接近设定值的值

来自分类Dev

在python列表列表中搜索最接近的值

Related 相关文章

热门标签

归档