JavaEE日常工作经验总结系列(十六)-----Java获取数组中与参数最接近的数

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_27922023/article/details/81475353

Java小算法实现系列

概述

传入一个目标数组和目标元素,返回数组中与目标元素最接近的元素;

方法一

 public static Object getNumberTwo(int[] intarray,int number){
     Map<Integer, Integer> map = new HashMap<Integer, Integer>();
     for (int object : intarray) {
         map.put(Math.abs(number-object), object);
     }
     Object[] array = map.keySet().toArray();
     Arrays.sort(array);
     return map.get(array[0]);
 }

方法二

public static int getNumberThree(int[] intarray,int number){
    int index = Math.abs(number-intarray[0]);
    int result = intarray[0];
    for (int i : intarray) {
        int abs = Math.abs(number-i);
        if(abs <= index){
            index = abs;
            result = i;
        }
    }
    return result;
}

测试代码

int [] test = {150,200,240,250,300};
getNumberTwo(test,0);
getNumberThree(test,0);

性能比较

getNumberThree方法执行时间======207451
getNumberTwo方法执行时间======2011367

结论

方法一中要每次new一个Map。导致空间复杂度为O(n),在性能上不及方法二,如果你有更好的实现,希望交流;

猜你喜欢

转载自blog.csdn.net/qq_27922023/article/details/81475353