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