【发布时间】:2014-12-16 23:39:25
【问题描述】:
我有一个排序数组。给定一个键值(不一定在表中),我想在表中找到接近键值的元素。
我考虑过使用二进制搜索,但如果键不在表中(不是-1),我需要返回最接近的元素。我应该怎么做?
如果没有匹配,则返回-1。这是我目前对二分搜索的尝试:
public static long binarySearch (ArrayList<Long> arr, int first, int last, long key)
{
if (first > last) return -1;
int mid = first + (last - first)/2;
if (arr.get(mid) == key)
return mid;
else if (arr.get(mid) > key)
return binarySearch(arr, first, mid - 1, key);
else
return binarySearch(arr, mid + 1, last, key);
}
【问题讨论】:
-
你有什么问题?
-
“最接近”是什么意思?
-
例如{1,4,6,7,8,19},如果key为3,则方法必须返回4
-
{1,2,4,5},key是3,哪个最接近?
-
听起来像你想要的
NavigableSet。
标签: java binary-search