import java.util.Arrays; import java.io.PrintWriter; import java.io.File; import java.util.Scanner; public class SortTimes { /* convert nanos to seconds */ static final double ONE_BILLION = 1_000_000_000.; /* sizes of input range should range up to 512k elements */ static int[] sizes = new int[32]; public static void main(String[] args) throws Exception { int sIdx = 0; long startTime; long endTime; double time; int size = 128*1024/sizes.length; /* let's make size smaller, comment out this next line and see what happens */ size = 16*1024/sizes.length; for( int i=0; i<sizes.length; i++ ) { sizes[i] = (i+1)*size; } Scanner inp = new Scanner(System.in); System.out.print("What is your last name? "); String lastName = inp.next(); PrintWriter pw = new PrintWriter(new File(lastName + "_sortTimes.csv")); pw.println( "Size, BubbleSort, MergeSort, QuickSort, JavaSort, BubbleSort (Sorted Array), MergeSort (Sorted Array), QuickSort (Sorted Array), JavaSort (Sorted Array)" ); while( sIdx < sizes.length ) { int[] A = new int[sizes[sIdx]]; int[] B = new int[sizes[sIdx]]; int[] C = new int[sizes[sIdx]]; int[] D = new int[sizes[sIdx]]; int[] E = new int[sizes[sIdx]]; for( int i=0; i<A.length; i++ ) { A[i] = (int)(Math.random()*sizes[sIdx]*2); B[i] = A[i]; C[i] = A[i]; D[i] = A[i]; E[i] = 1000; // Array E is used for testing algo on array that is already sorted. } System.out.println(); System.out.println("--------------------------------------------------"); System.out.println("Initial Values: "); printArray(A); pw.print(A.length + ", "); System.out.println( "Starting bubble sort ---------------- Size = " + B.length); startTime = System.nanoTime(); bubbleSort(A); endTime = System.nanoTime(); time = (endTime - startTime) / ONE_BILLION; System.out.println( "Bubble sort finished - time = " + time + " seconds" ); pw.print(time + ", "); printArray(A); System.out.println(); System.out.println( "Starting merge sort ---------------- Size = " + C.length); startTime = System.nanoTime(); mergeSort(B); endTime = System.nanoTime(); time = (endTime - startTime) / ONE_BILLION; System.out.println( "Merge sort finished - time = " + time + " seconds."); pw.print(time + ", "); printArray(B); System.out.println(); System.out.println( "Starting quick sort ---------------- Size = " + D.length); startTime = System.nanoTime(); quickSort(C); endTime = System.nanoTime(); time = (endTime - startTime) / ONE_BILLION; System.out.println( "quickSort finished - time = " + time + " seconds." ); pw.print(time + ", "); printArray(C); System.out.println(); System.out.println( "Starting java's Array sort ---------------- Size = " + D.length); startTime = System.nanoTime(); javaSort(D); endTime = System.nanoTime(); time = (endTime - startTime) / ONE_BILLION; System.out.println( "Java's Array sort finished - time = " + time + " seconds." ); pw.print(time + ", "); printArray(D); System.out.println(); System.out.println( "Starting bubble sort on sorted array ---------------- Size = " + B.length); star.