test1

来源:互联网 发布:小学生上网数据 编辑:程序博客网 时间:2024/05/01 09:44
package ztest.a;import java.util.Arrays;import java.util.Comparator;public class Test3 {    //核心数组排序   参考jdk Arrays.sort   TimSort(优化后的归并排序)    public void coreSort(Integer[] a,Comparator<Integer> c){        Arrays.sort(a, c);    }    //从大到小排序    public void sortArray(Integer[] a){        coreSort(a, new Comparator<Integer>(){            @Override            public int compare(Integer o1, Integer o2) {                return o2 - o1;            }        });    }    //按高位排序    public void sortByHighNumber(Integer[] a){        coreSort(a, new Comparator<Integer>(){            @Override            public int compare(Integer o1, Integer o2) {                //依次比较最高位 次高位...                String s1 = o1.toString();                String s2 = o2.toString();                int len = s1.length() <= s2.length() ? s1.length():s2.length();                for (int i=0; i<len; i++) {                    Integer s1_i = Integer.valueOf(s1.charAt(i));                    Integer s2_i = Integer.valueOf(s2.charAt(i));                    if(s2_i > s1_i){                        return 1;                    }else if(s2_i < s1_i){                        return -1;                    }else{                        continue;                    }                }                //完全相等                return 0;            }        });    }        public void printArray(Integer[] a){        System.out.print("[");        for (Integer integer : a) {            System.out.print(integer+",");        }        System.out.print("]");    }        public void fun(Integer[] a, int l){        assert l <= a.length;        this.sortArray(a);        Integer[] al = new Integer[l];        for(int i=0 ; i<l; i++){            al[i] = a[i];        }                this.sortByHighNumber(al);                System.out.println("原始数组:");        this.printArray(a);        System.out.println("");        System.out.println("选出的数组:");        this.printArray(al);        System.out.println("");        System.out.println("结果:");        for (Integer integer : al) {            System.out.print(integer);        }    }                public static void main(String[] args) {        Integer[] a= {3423,33,456,9,8,7,21};        Test3 t = new Test3();        t.fun(a, 3);    }}

0 0
原创粉丝点击