And*_*obs 4 algorithm math set
假设我在0到100之间有一组10个随机数.
操作员还给我一个介于0和100之间的随机数.然后我找到了集合中与操作员给我的数字最接近的数字.
set = {1,10,34,39,69,89,94,96,98,100}
操作员编号= 45
return = 39
如何将其转换为代码?(javascript或其他)
如果set是有序的,则进行二分查找以找到最接近的值(或2个值).然后区分哪两个最接近...减去?
如果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;
}
Run Code Online (Sandbox Code Playgroud)
input,创建另一个相同大小的数组Math.abs(input[i] - operatorNumber)k)input[k]NB
function closestTo(number, set) {
var closest = set[0];
var prev = Math.abs(set[0] - number);
for (var i = 1; i < set.length; i++) {
var diff = Math.abs(set[i] - number);
if (diff < prev) {
prev = diff;
closest = set[i];
}
}
return closest;
}
Run Code Online (Sandbox Code Playgroud)