插值搜索,找到最接近的值

时间:2018-04-16 13:21:49

标签: c#

我正在尝试使用插值搜索算法来查找值并将其返回。 (目前它正在做什么)。我正在尝试修改它,以便返回一个数字,如果在数组中找不到搜索到的项目,我可以用它来查找输入项目的最接近的值。

@Bean
public WebMvcConfigurer corsConfigurer() {
    return new WebMvcConfigurerAdapter() {
        @Override
        public void addCorsMappings(CorsRegistry registry) {
            registry.addMapping("/**")
                    .allowedOrigins("http://localhost:4200")
                    .allowedMethods("GET", "POST", "PUT", "DELETE", "HEAD","OPTIONS")
                    .allowedHeaders("Content-Type", "Date", "Total-Count", "loginInfo","jwt_token")
                    .exposedHeaders("Content-Type", "Date", "Total-Count", "loginInfo", "jwt_token")
                    .maxAge(3600);
        }
    };
}

1 个答案:

答案 0 :(得分:0)

您可以使用找到最接近值的聚合。 这是一种自定义扩展方法,但你明白了。

 public static double GetValueClosestTo(this List<double> values, double closestTo)
 {
     return values.Aggregate((x, y) => Math.Abs(x - closestTo) < Math.Abs(y - closestTo) ? x : y);
 }

假设您有以下数组{1, 5, 9.2, 6, 17}并测试以下数字{6, 15, 5.2}。您将使用以下代码

var sourceArray = new [] {1, 5, 9.2, 6, 17}.ToList() // for simplicity i use a list

var closestToX = sourceArray.GetValueClosestTo(6); // this return 6
closestToX = sourceArray.GetValueClosestTo(15); // this return 17
closestToX = sourceArray.GetValueClosestTo(5.2); // this return 5