本人刚开始学编程,遇到一个问题:{24,12,46,78,98,83}把这组数据排序,要求是每个数的十位和个位相加后得到的值排序,如果相加后还是两位数,那再进行相加,
直到加成一位数后排序。排序是按这个方法,但是最后要输出的是这组数据排序后的顺序,我不知道怎么把排序后的数(就是做了相加后排序),再还原成原来这组数据
的数输出。不知道说得明白不,想了很久也想不出来,本人是菜鸟,想问下各位高手有什么好的算法没有?

解决方案 »

  1.   

    String[] arr = {"24","12","46","78","98","83"};
    Arrays.sort(arr,new Comparator<String>(){     @Override
        public int compare(String o1, String o2) {
    // TODO Auto-generated method stub
    int i1 = new Integer(o1);
    int i2 = new Integer(o2);
    int r1=0,r2=0;
    while(i1!=0){
        r1 += i1%10;
        i1 = i1/10;
    }
    while(i2!=0){
        r2 += i2%10;
        i2 = i2/10;
    }
    return r1-r2;
        }     
    });
    for(String s:arr){
        System.out.print(s+" ");
    }