package sort;
import java.util.Arrays;
public class BasicSort {
public static void main(String[] args) {
int[] arrays = new int[]{53,542,3,63,14,214,154,748,616};
sort(arrays);
}
public static void sort(int[] arrays) {
/**
* 获取最大数的位数
*/
int max = 0;
for (int i = 0; i < arrays.length; i++) {
if (arrays[i] > max) {
max = arrays[i];
}
}
int maxLength = (max + "").length();
/**
* 定义一个二维数组,用来存放每次按某个位数排列的结果
*/
int[][] bucket = new int[10][arrays.length];
/**
* 定义一个辅助数组,用来把每次排列的数据依次组成一个新的数组
*/
int[] temp = new int[10];
// 从个位依次排序
for (int i = 0; i < maxLength; i++) {
for (int j = 0; j < arrays.length; j++) {
int a = (int) (arrays[j] / Math.pow(10, i+1) % 10);
// 放入数组
bucket[a][temp[a]] = arrays[j];
temp[a] ++;
}
// 每排以此更新一次array数组
int index = 0;
for (int k = 0; k < bucket.length; k++) {
if (temp[k] != 0) {
for (int n = 0; n < temp[k]; n++) {
arrays[index++] = bucket[k][n];
}
}
temp[k] = 0;
}
}
System.out.println("基数排序后的顺序:"+Arrays.toString(arrays));
}
}
|