数值区间的模糊匹配,二分查找的应用

先看图:数值区间的模糊匹配,二分查找的应用_第1张图片
需求很明确,要根据左边的值,显示右边的值。

比如,现在拿到的值是 17.12,那么应该显示成 15;拿到 17.599 ,那么应该显示成 20.

先找规律:

为了便于说明,暂且将左边的值设为 x, 右边的值设为 y.

  1. 第一行和最后一行可以写死成 0 与 1500;
  2. 余下的每行,x 的区间是 (min, min+5] , 对应的 y == min + 2.5,

那么,根据规律 2 ,也就是说 y-2.5==min; y+2.5 == max。虽然这里有点投机取巧之嫌(因为刚好是 ± 2.5)。

根据 x 计算 y,如何计算呢?

思考 666 分钟之后,发现这个很难计算,虽然规律是显而易见的,但是,一个任意的 x ,又怎么去匹配到对应的行呢,似乎有点困难。
如果说弄一个 list 之类的容器去记录 x 的区间,这样似乎就失去了计算的意义,跟直接 switch case 也没什么区别了。

于是决定换个思路,从 y 下手,因为 y 的值更少,而且规律更显而易见。

我们这么看,拿到一个 x, 就去跟 (y-2.5, y+2,5]

你可能感兴趣的:(2022--magic,实际需求解决方案,java,开发语言)