如果set是有序的,请执行二进制搜索以找到最接近的值(或2个值)。然后通过减去…来区分2中最接近的那个?
如果没有对set进行排序,则只需遍历set(对它本身进行一次以上排序),然后对于每个成员,检查差异是否小于到目前为止所看到的最小差异,以及是否小于是,将其记录为新的最小差异,并将该数字记录为新的候选答案。。
public int FindClosest(int targetVal, int[] set) { int dif = 100, cand = 0; foreach(int x in set) if (Math.Abs(x-targetVal) < dif) { dif = Math.Abs(x-targetVal); cand = x; } return cand; }


