你用java写基数排序算法代码
时间: 2023-03-13 13:08:31 浏览: 151
我可以提供一个简单的Java代码例子,实现基数排序:
public class RadixSort {
public static void main(String[] args) {
int[] arr = {170, 45, 75, 90, 802, 24, 2, 66};
radixSort(arr);
System.out.println(Arrays.toString(arr));
}
public static void radixSort(int[] arr) {
//找到数组中最大的数
int max = arr[0];
for (int i = 1; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
//从个位开始,对数组arr按"指数"进行排序
for (int exp = 1; max/exp > 0; exp *= 10) {
countSort(arr, exp);
}
}
public static void countSort(int[] arr, int exp) {
//计数器
int[] c = new int[10];
//存储"被排序的数组"的副本,作为临时存储空间
int[] r = new int[arr.length];
//计算每个元素的个数
for (int i = 0; i < arr.length; i++) {
c[(arr[i]/exp)%10]++;
}
//计算排序后的位置
for (int i = 1; i < 10; i++) {
c[i] += c[i-1];
}
//临时数组r倒序存储排序后的结果
for (int i = arr.length-1; i >= 0; i--) {
r[c[(arr[i]/exp)%10]-1] = arr[i];
c[(arr[i]/exp)%10]--;
}
//将结果拷贝给a
for (int i = 0; i < arr.length; i++) {
arr[i] = r[i];
}
}
}
阅读全文