(5)Java实验基数排序
实验代码:
import java.util.Arrays;
//基数排序
public class RadixSort {
public static void main(String[] args) {
int[] arr = {53,3,542,748,14,214};
radixSort(arr);
}
public static void radixSort(int[] arr){
//寻找数组中的最大值
int max = arr[0];
for (int t = 1; t < arr.length-1; t++){
if (arr[t]>max){
max = arr[t];
}
}
int maxLength = (max + "").length();//计算循环的次数
//创建一个二维数组
int[][] buket = new int[10][arr.length];//其中一位数组表示10个桶,二维表示桶中存放的数据
int[] buketElement = new int[10];//表示每个桶存放元素的个数
for (int h = 0 ,n = 1; h < maxLength;h++,n *= 10){
//将元素放入桶中并记录每个桶中元素的个数
for (int i = 0; i < arr.length-1;i++){
int dataElement = arr[i] /n % 10;//将元素进行分桶,将其装入对应的桶中
buket[dataElement][buketElement[dataElement]] = arr[i];
buketElement[dataElement]++;
}
int index = 0;
//变量桶中的数据
for (int j = 0; j < arr.length-1; j++){
if (buketElement[j] != 0){
for (int l = 0; l < buketElement[j]; l++){
arr[index++] = buket[j][l];
}
}
buketElement[j] = 0;
}
System.out.println("弟"+(h+1)+"轮的数据:"+Arrays.toString(arr));
}
}
}
实验结果:
“C:\Program Files\Java\jdk-9.0.4\bin\java.exe” “-javaagent:D:\IntelliJ IDEA 2019.3.3\lib\idea_rt.jar=8198:D:\IntelliJ IDEA 2019.3.3\bin” -Dfile.encoding=UTF-8 -classpath E:\daima\suanfa\out\production\算法练习 com.wllarl.suanfa.sort.RadixSort
弟1轮的数据:[542, 53, 3, 14, 14, 214]
弟2轮的数据:[3, 14, 14, 542, 14, 214]
弟3轮的数据:[3, 14, 14, 14, 14, 214]
Process finished with exit code 0