test1

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值