找到最接近的元素我有一个排序的数组。给定一个键值(不一定在表中),我想找到表中接近键值的元素。ArrayList中
我曾考虑使用二进制搜索,但我需要返回最接近的元素,如果该键不在表(未-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);
}
什么是你的问题? – Keppil
“最接近”是什么意思? – aliteralmind
例如{1,4,6,7,8,19},如果密钥是3,则该方法必须返回4 – user3090011