import java.io.*; import java.util.*; public class Radix{ private long BubbleComparisons = 0; private long BubbleSwaps = 0; private long selectionComps = 0; private long selectionSwaps = 0; private long insertionComps = 0; private long insertionSwaps = 0; public int[] sort(int[] A){ ArrayList[] buckets = new ArrayList[10]; int n = 0; while (n < 4){ for(int i = 0; i < 10; i ++) buckets[i] = new ArrayList(); for (int j = 0; j < A.length; j ++){ buckets[(A[j] / (int)Math.pow(10,n)) % 10].add(A[j]); } int counter = 0; for(int p = 0; p < buckets.length; p ++){ for(int m = 0; m < buckets[p].size(); m = m){ A[counter] = (Integer)(buckets[p].remove(0)); counter = counter + 1; } } n = n + 1; } return A; } public int[] bubble(int[] A) { for (int i = 0; i < A.length - 1; i ++) { for (int j = 0; j < A.length - 1; j ++) { BubbleComparisons ++; if (A[j] > A[j + 1]) { int t = A[j]; A[j] = A[j + 1]; A[j + 1] = t; BubbleSwaps ++; } } } System.out.println("Bubble Sort"); System.out.println("Comparisons: " + BubbleComparisons); System.out.println("Swaps: " + BubbleSwaps); return A; } public int[] selection(int[] A){ int temp; for (int i = 0; i < A.length - 1; i ++){ int I = i; for (int j = i; j < A.length; j ++){ selectionComps ++; if (A[j]<A[I]){ I = j; } } selectionSwaps ++; temp = A[i]; A[i] = A[I]; A[I] = temp; } System.out.println("Selection Sort"); System.out.println("Comparisons: " + selectionComps); System.out.println("Swaps: " + selectionSwaps); return A; } public int[] insertion(int[] A){ int temp; for (int i = 1; i < A.length; i ++){ tmp = A[i]; for (int j = i; j > 0 && temp < A[j - 1]; j --){ A[j] = A[j - 1]; insertionComps ++; insertionSwaps ++; } A[j] = temp; insertionSwaps = insertionSwaps + 2; } insertionSwaps = insertionSwaps / 3; System.out.println("Insertion Sort"); System.out.println("Comparisons: " + selectionComps); System.out.println("Swaps: " + selectionSwaps); return A; } }