这个算法是对两位数进行排序,即:3,5,11,14,42,23,21....(其他位数可以自己扩展,其中QuequeI就是队列).是一个非常有意思的算法.
private final int ONES = 1; //个位
public void baseCompositor(int[] reData) throws QuequeException{
QuequeI[] q = new QuequeI[10];
for(int i=0;i<10;i++)
q[i] = new QuequeI(10);
distribute(reData,q,ONES);
collect(reData,q);
print(reData);
System.out.println("=====================");
distribute(reData,q,2);//十位
collect(reData,q);
print(reData);
}
//distribute data to queque
public void distribute(int[] reData,QuequeI[] q,int kind) throws QuequeException{
int i = 0;
if(kind == ONES) {
while(i<reData.length){
q[reData[i]%10].insert(reData[i]);
i++;
}
} else{
while(i<reData.length){
q[reData[i]/10].insert(reData[i]);
i++;
}
}
}
//collect data in queque to array
public void collect(int[] reData,QuequeI[] q) throws QuequeException{
int temp = 0;
for(int i=0;i<10;i++){
while(!q[i].isEmpty()){
reData[temp++] = q[i].delete();
}
}
}
//print data in array
public void print(int[] reData){
for(int i=0;i<reData.length;i++)
System.out.print(reData[i]+" ");
System.out.println();
}
private final int ONES = 1; //个位
public void baseCompositor(int[] reData) throws QuequeException{
QuequeI[] q = new QuequeI[10];
for(int i=0;i<10;i++)
q[i] = new QuequeI(10);
distribute(reData,q,ONES);
collect(reData,q);
print(reData);
System.out.println("=====================");
distribute(reData,q,2);//十位
collect(reData,q);
print(reData);
}
//distribute data to queque
public void distribute(int[] reData,QuequeI[] q,int kind) throws QuequeException{
int i = 0;
if(kind == ONES) {
while(i<reData.length){
q[reData[i]%10].insert(reData[i]);
i++;
}
} else{
while(i<reData.length){
q[reData[i]/10].insert(reData[i]);
i++;
}
}
}
//collect data in queque to array
public void collect(int[] reData,QuequeI[] q) throws QuequeException{
int temp = 0;
for(int i=0;i<10;i++){
while(!q[i].isEmpty()){
reData[temp++] = q[i].delete();
}
}
}
//print data in array
public void print(int[] reData){
for(int i=0;i<reData.length;i++)
System.out.print(reData[i]+" ");
System.out.println();
}
博客介绍了一个对两位数进行排序的算法,通过队列实现排序过程,包含分发、收集和打印数据等步骤,还提到其他位数可自行扩展,给出了具体的代码实现。

被折叠的 条评论
为什么被折叠?



