// Worked with Eric Wong on this import java.util.*; public class Sort { /* 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 double[] list() { double[] numbers = new double[10000]; for (int i=0; i<numbers.length; i++) { numbers[i] = Math.random()*100; } return numbers; } public void bubble() { double[] numbers = list(); //System.out.println(Arrays.toString(numbers)); long start,end; start = System.currentTimeMillis(); double[] sort = numbers; int comp = 0; int swap = 0; for (int j=0;j<sort.length-1;j++) { for (int i=0;i<sort.length-1;i++) { if (sort[i]>sort[i+1]) { double small = sort[i+1]; sort[i+1] = sort[i]; sort[i] = small; swap++; } comp++; } } end = System.currentTimeMillis(); //System.out.println(Arrays.toString(sort)); System.out.println("Ifs: " + comp); System.out.println("Swaps: " + swap); System.out.println("Time: " + (end-start)); } public void selection() { double [] numbers = list(); //System.out.println(Arrays.toString(numbers)); long start,end; start = System.currentTimeMillis(); double[] sort = numbers; int swap=0; int comp=0; int min; for (int n = 0; n <sort.length-1; n ++){ min = n; for (int i=n+1;i<sort.length;i++) { comp ++; if (sort[i]<sort[min]){ min = i; } } if (min != n){ swap ++; double val = sort[n]; sort[n]=sort[min]; sort[min]=val; } } end = System.currentTimeMillis(); //System.out.println(Arrays.toString(sort)); System.out.println("Ifs: " + comp); System.out.println("Swaps: " + swap); System.out.println("Time: " + (end-start)); } public void insertion(){ double [] numbers = list(); //System.out.println(Arrays.toString(numbers)); long start,end; start = System.currentTimeMillis(); double[] sort = numbers; int swap=0; int comp=0; for (int i = 2; i < sort.length; i ++){ for (int j = i; (j > 0&&sort[j] < sort[j-1]); j --){ comp ++; swap ++; double val = sort[j]; sort[j]=sort[j-1]; sort[j-1]= val; } } end = System.currentTimeMillis(); //System.out.println(Arrays.toString(sort)); System.out.println("Ifs: " + comp); System.out.println("Swaps: " + swap); System.out.println("Time: " + (end-start)); } public static void main(String args[]) { Sort s = new Sort(); System.out.println( "---------------------\n" + "Bubble \n"); s.bubble(); System.out.println("----------------------\n" + "Selection \n"); s.selection(); System.out.println("----------------------\n" + "Insertion \n"); s.insertion(); } }