import java.io.*; import java.util.*; public class Sort { /* -----radixSort taken from Terrance Liang (since I can't find my own)-----; public void radixSort() { long start,end; Random r = new Random(); ArrayList[] buckets = new ArrayList[10]; for (int i=0; i<buckets.length; i++) { buckets[i] = new ArrayList(); } int[] numbers = new int[100]; for (int i=0; i<numbers.length; i++) { numbers[i] = r.nextInt(100); } int[]numbersCopy = numbers; System.out.println(Arrays.toString(numbers)); int power = 0; for (int i=0; i<numbers.length; i++) { if (numbers[i] > power) power = numbers[i]; } int maxPower = 0; while (power > 0) { power /= 10; maxPower++; } start = System.currentTimeMillis(); for (int n=0; n<maxPower; n++) { for (int i=0; i<numbers.length; i++) { int digit = (int) (numbers[i] / Math.pow(10, n)) % 10; buckets[digit].add(numbers[i]); } int numbersIndex = 0; for (int b=0; b<buckets.length; b++) { for (int e=0; e<buckets[b].size(); e++) { numbers[numbersIndex] = (Integer) buckets[b].get(e); numbersIndex++; } } for (int i=0; i<buckets.length; i++) { buckets[i] = new ArrayList(); } } end = System.currentTimeMillis(); System.out.println(Arrays.toString(numbers)); System.out.println(end - start); start = System.currentTimeMillis(); Arrays.sort(numbersCopy); end = System.currentTimeMillis(); System.out.println(end-start); } */ public int[] makeArray() { Random r = new Random(); int[] numbers = new int[10000]; for (int i=0; i<numbers.length; i++) { numbers[i] = r.nextInt(1000); } return numbers; } public void bubble() { int[] numbers = makeArray(); int[] sort = numbers; long start,end; int comps = 0, swaps = 0; start = System.currentTimeMillis(); for (int i=0;i<sort.length-1;i++) { for (int j=0;j<sort.length-1;j++) { if (sort[j]>sort[j+1]) { int small = sort[j+1]; int large = sort[j]; sort[j+1] = large; sort[j] = small; swaps++; } comps++; } } end = System.currentTimeMillis(); System.out.println("Comparisons: " + comps); System.out.println("Swaps: " + swaps); System.out.println("Time: " + (end-start)); } public void selection() { int [] numbers = makeArray(); int[] sort = numbers; long start,end; int comps = 0, swaps = 0; int min; start = System.currentTimeMillis(); for (int n = 0; n <sort.length-1; n++){ min = n; for (int i=n+1;i<sort.length;i++) { comps ++; if (sort[i]<sort[min]){ min = i; } } if (min != n){ swaps ++; int val = sort[n]; sort[n]=sort[min]; sort[min]=val; } } end = System.currentTimeMillis(); System.out.println("Comparisons: " + comps); System.out.println("Swaps: " + swaps); System.out.println("Time: " + (end-start)); } public void insertion(){ int [] numbers = makeArray(); int[] sort = numbers; long start,end; int comps = 0, swaps = 0; start = System.currentTimeMillis(); for (int i = 2; i < sort.length; i ++){ for (int j = i; (j > 0&&sort[j] < sort[j-1]); j --){ comps ++; swaps ++; int val = sort[j]; sort[j]=sort[j-1]; sort[j-1]= val; } } end = System.currentTimeMillis(); System.out.println("Comparisons: " + comps); System.out.println("Swaps: " + swaps); System.out.println("Time: " + (end-start)); } public static void main(String args[]) { Sort s = new Sort(); System.out.println("\nBubble Sort"); s.bubble(); System.out.println("\nSelection Sort"); s.selection(); System.out.println("\nInsertion Sort"); s.insertion(); } }