解题思路:本文的题意是取每个字符串的后六位数字并升序排序。首先用一个整型数组来存储从所有字符串中选择的后六位数字,由于是对整数排序,所以采用了基数排序。注意,把字符型转化为整数是通过Interger.parseInt(str)实现的,str为字符串,因此首先把字符型转化为字符串型。
import java.util.;
public class test2{
public static void main(String arg[]){
Scanner scan=new Scanner(System.in);
int M=scan.nextInt();
List<string> list=new ArrayList<>();
int[] sortlist=new int[M];
int a=0,b=0;
for(int i=0;i<M;i++) {
String str=new String(scan.next());
list.add(str);
}
Stack s=new Stack();
for(int i=0;i<M;i++) {
String str=list.get(i);
a=0;
for(int j=str.length()-1;j>=str.length()-6;j--) {
s.push(str.charAt(j));
}
for(int j=5;j>=0;j--) {
b=Integer.parseInt(s.pop().toString());
a=a+b</string>
(int)Math.pow(10, j);
}
sortlist[i]=a;
}
radixSort(sortlist,M,6,10);
for(int i=0;i<M;i++) {
System.out.println(sortlist[i]);
}
}

public static int digit(int data,int m,int r){
    /*获取data的第m位数字,该数字为r进制*/
    int i,d;
    if(m==0) return data%r;
    d=r;
    for(i=1;i<m;i++){
        d=d*r;
    }
    return (data/d)%r;
}

public static void radixSort(int array[],int n,int m,int r){
    /*数组array中存放关键字为m位的r进制数,数组大小为n*/
    int i,j,k;
    Queue[] que=new Queue[r];  //定义一个队列数组
    for( i=0;i<r;i++){    //初始化队列数组
        que[i]=new LinkedList<Integer>();
    }

    for(i=0;i<m;i++){ //进行m趟排序

        for(j=0;j<n;j++){
            k=digit(array[j], i, r);   //取出数组中第j个数的第i位的值
            que[k].add(array[j]);      //把数组中第j个数放入k对应的队列中
        }

        j=0;
        for(k=0;k<r;k++){    //把所有队列中的值取出,重新存入数组array中
            while(!que[k].isEmpty()){
                array[j++]=(int) que[k].remove();
            }               
        }
    }

}

}