package sort;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 基数排序
*
*/
public class Radix10 {
public static void main(String[] args) {
int[] arr1 = {44,38,5,47,15,31,32,88,2,23,43,54,1,7,56,100,101,102};
// int[] arr1 = {44,38,5,47};
radixSort(arr1);
System.out.println(Arrays.toString(arr1));
}
private static void radixSort(int[] arr) {
int max=arr[0];
for(int i=0;i<arr.length;i++) {
if(arr[i]>max) {
max=arr[i];
}
}
int digits=0;
while(max/10>0) {
digits++;
max/=10;
}
for(int i=0;i<=digits;i++) {
Map<Integer,List<Integer>> map=new HashMap<>();
for(int k=0;k<10;k++) {
map.put(k, new ArrayList<Integer>());
}
for(int j=0;j<arr.length;j++) {
int targetIndex=(arr[j]/(int)Math.pow(10, i))%10;
map.get(targetIndex).add(arr[j]);
}
int arrIndex=0;
for(int m=0;m<10;m++) {
List<Integer> list=map.get(m);
for(Integer num:list) {
arr[arrIndex]=num;
arrIndex++;
}
}
}
}
}
基数排序算法
最新推荐文章于 2024-07-25 23:10:45 发布