考虑一个整数数组(假定为排序);我想以最快的方式找到最接近给定整数的整数的数组索引。而在存在多种可能性的情况下,该算法应该识别所有。例如:考虑T =(3,5,24,65,67,87,129,147,166),并且如果给定的整数是144,那么代码应该将147标识为最接近的整数,并且给出数组索引7对应于该条目。对于66的情况,算法应该识别65和67.排序整数列表中的近似搜索算法
是否有O(1)或至少O(log N)算法来做到这一点?直接搜索算法(二进制搜索,树搜索,散列等)实现将不起作用,因为那些将需要完美匹配。有什么办法可以修改这些以处理大致的搜索?
我正在开发一个C代码。
谢谢