2016-02-16 73 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