1  import java.util.Arrays;
  2  import java.util.Scanner;
  3  
  4  /**
  5     This program measures how long it takes to sort an
  6     array of a user-specified size with the Shell
  7     sort algorithm.
  8  */
  9  public class ShellSortTimer
 10  {  
 11     public static void main(String[] args)
 12     {  
 13        Scanner in = new Scanner(System.in);
 14        System.out.print("Enter array size: ");
 15        int n = in.nextInt();
 16  
 17        // Construct random array
 18     
 19        int[] a = ArrayUtil.randomIntArray(n, 100);
 20        int[] a2 = Arrays.copyOf(a, a.length);
 21        int[] a3 = Arrays.copyOf(a, a.length);
 22        
 23        // Use stopwatch to time selection sort
 24        
 25        StopWatch timer = new StopWatch();
 26        
 27        timer.start();
 28        ShellSorter.sort(a);
 29        timer.stop();
 30        
 31        System.out.println("Elapsed time with Shell sort: " 
 32              + timer.getElapsedTime() + " milliseconds");
 33  
 34        timer.reset();
 35        timer.start();
 36        Arrays.sort(a2);
 37        timer.stop();
 38  
 39        System.out.println("Elapsed time with Arrays.sort: " 
 40              + timer.getElapsedTime() + " milliseconds");
 41  
 42        if (!Arrays.equals(a, a2)) 
 43        { 
 44           throw new IllegalStateException("Incorrect sort result"); 
 45        }
 46  
 47        timer.reset();
 48        timer.start();
 49        InsertionSorter.sort(a3);
 50        timer.stop();
 51  
 52        System.out.println("Elapsed time with insertion sort: " 
 53              + timer.getElapsedTime() + " milliseconds");
 54     }
 55  }
 56  
 57