import java.util.LinkedList; public class RadixSort { public static void main(String[] args) { int[] arr = {10,9,8,7,6,5,4,3,2,1}; radixSort(arr); for(int i : arr) System.out.println(i); } //int Arr public static void radixSort(int[] arr) { int größteZ=arr[0]; //Buckets als Listen anlegen LinkedList B0 = new LinkedList<>(); LinkedList B1 = new LinkedList<>(); LinkedList B2 = new LinkedList<>(); LinkedList B3 = new LinkedList<>(); LinkedList B4 = new LinkedList<>(); LinkedList B5 = new LinkedList<>(); LinkedList B6 = new LinkedList<>(); LinkedList B7 = new LinkedList<>(); LinkedList B8 = new LinkedList<>(); LinkedList B9 = new LinkedList<>(); for(int i = 0; i < arr.length; i++) { if(arr[i] > größteZ) größteZ=arr[i]; } int cnt=1; while(größteZ / 10 >0) { größteZ= größteZ%10; cnt++; } for(int i = 0; i< cnt; i++) { //Befuellen der Buckets; for(int d = 0; d< arr.length; d++ ) { int r = arr[i] % 10; switch(r) { case 0: B0.add(arr[i]); case 1: B1.add(arr[i]); case 2: B2.add(arr[i]); case 3: B3.add(arr[i]); case 4: B4.add(arr[i]); case 5: B5.add(arr[i]); case 6: B6.add(arr[i]); case 7: B7.add(arr[i]); case 8: B8.add(arr[i]); case 9: B9.add(arr[i]); } } // Buckets durchlaufen und wieder einsortierten in die ursprüngliche Arr int e =0; for(int in : B0) {arr[e]= in; e++;} for(int in : B1) {arr[e]= in; e++;} for(int in : B2) {arr[e]= in; e++;} for(int in : B3) {arr[e]= in; e++;} for(int in : B4) {arr[e]= in; e++;} for(int in : B5) {arr[e]= in; e++;} for(int in : B6) {arr[e]= in; e++;} for(int in : B7) {arr[e]= in; e++;} for(int in : B8) {arr[e]= in; e++;} for(int in : B9) {arr[e]= in; e++;} } } }