1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| public class RadixSort { int[] a ={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,101,56,17,18,23,34,15,35,25,53,51}; public void radixSort(){ sort(a); for(int i=0; i<a.length; i++){ System.out.println(a[i]); } } public void sort(int[] array){ int max = array[0]; for(int i=1; i<array.length; i++){ if(array[i]>max){ max = array[i]; } } int time = 0; while(max >0){ max/=10; time++; } List<ArrayList> queue = new ArrayList<ArrayList>(); for(int i = 0 ; i < 10 ; i++){ ArrayList<Integer> queue1 = new ArrayList<Integer>(); queue.add(queue1); } for(int i =0; i< time; i++){ for(int j=0; j<array.length; j++){ int x = array[j]%(int)Math.pow(10,i+1)/(int)Math.pow(10,i); ArrayList<Integer> queue2 = queue.get(x); queue2.add(array[j]); queue.set(x,queue2); } } int count = 0 ; for(int k = 0; k < 10; k++){ while(queue.get(k).size()>0){ ArrayList<Integer> queue3 = queue.get(k); array[count] = queue3.get(0); queue3.remove(0); count++; } } } }
|