Java数组小算法

  ·   Java   ·   数组   ·   算法     浏览量:

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),在性能上不及方法二,如果你有更好的实现,希望交流;



收起 >>
Java数组小算法