1 /**
2 The sort method of this class sorts an array, using the selection
3 sort algorithm.
4 */
5 public class SelectionSorter
6 {
7 /**
8 Sorts an array, using selection sort.
9 @param a the array to sort
10 */
11 public static void sort(int[] a)
12 {
13 for (int i = 0; i < a.length - 1; i++)
14 {
15 int minPos = minimumPosition(a, i);
16 ArrayUtil.swap(a, minPos, i);
17 }
18 }
19
20 /**
21 Finds the smallest element in a tail range of the array.
22 @param a the array to sort
23 @param from the first position in a to compare
24 @return the position of the smallest element in the
25 range a[from] . . . a[a.length - 1]
26 */
27 private static int minimumPosition(int[] a, int from)
28 {
29 int minPos = from;
30 for (int i = from + 1; i < a.length; i++)
31 {
32 if (a[i] < a[minPos]) { minPos = i; }
33 }
34 return minPos;
35 }
36 }