2016-02-16 75 views
-5

嗨,大家好,我想知道是否有可能在arraylist中找到最接近的值,这会返回更高的值。Java - 在数组列表中找到最接近的值(更高)

示例:[3,7,12,19]的数组列表如果我的值是8,我怎样才能得到最接近(较大)的值12?

嗨,大家好,谢谢你的回复,我要求逻辑或理解,请不要误解我在等待答案!我试过这个功能,但我想要的是获得更接近的更高(更大)的值。这只是给我最接近但不是最大的最接近的价值

public int nearestValue(int value, ArrayList<Integer>List) 
{ 
    int lo = 0; 
    int hi = List.size()-1; 
    int lastValue = 0; 

    while(lo <= hi) 
    { 
     int mid = (lo + hi) /2; 
     lastValue = List.get(mid); 
     if (value < lastValue) 
     { 
      hi = mid - 1; 
     } 
     else if (value > lastValue) 
     { 
      lo = mid + 1; 
     } 
     else 
     { 
      return lastValue; 
     } 
    } 
    return lastValue; 
} 
+2

看'Arrays.binarySearch' – Eran

+1

是的,这是可能的。 *你*尝试过什么? –

+2

堆栈不是资源,您可以在其中请求完成您的工作。自己尝试一下,放入代码并写入,白色会出错。 – TEXHIK

回答

1

请求帮助之前,请添加一些代码。

下面是一些精神食粮让你开始(如果该数组是没有排序):

1)通过数组

2迭代)检查,如果你正在寻找在指数较高比你使用的数值要多

3)计算它们之间的差值并将它保存在一个临时变量中。

4)重复,

5)检查,如果你正在寻找新的指数不同的是比以前的(临时小)

6)保存最小差异

但是,如果阵列进行排序,查看二进制搜索并思考如何使用上述内容来提高效率。

+0

你为什么保存区别?问题中没有任何要求。 –

+0

这是如何检查它是否确实是最接近的'最高价值'。你想要最小的差异的整数。 – James