Java Reference
In-Depth Information
1
// Fig. 19.4: SelectionSortTest.java
2
// Sorting an array with selection sort.
3
import
java.security.SecureRandom;
4
import
java.util.Arrays;
5
6
public class
SelectionSortTest
7
{
8
// sort array using selection sort
9
public static void
selectionSort(
int
[] data)
10
{
11
// loop over data.length - 1 elements
12
for
(
int
i =
0
; i < data.length -
1
; i++)
13
{
14
int
smallest = i;
// first index of remaining array
15
16
// loop to find index of smallest element
17
for
(
int
index = i +
1
; index < data.length; index++)
18
if
(data[index] < data[smallest])
19
smallest = index;
20
21
swap(data, i, smallest);
// swap smallest element into position
22
printPass(i +
1
, smallest);
// output pass of algorithm
23
}
24
}
// end method selectionSort
25
26
// helper method to swap values in two elements
27
private static void
swap(
int
[] data,
int
first,
int
second)
28
{
29
int
temporary = data[first];
// store first in temporary
30
data[first] = data[second];
// replace first with second
31
data[second] = temporary;
// put temporary in second
32
}
33
34
// print a pass of the algorithm
35
private static void
printPass(
int
[] data,
int
pass,
int
index)
36
{
37
System.out.printf(
"after pass %2d: "
, pass);
38
39
// output elements till selected item
40
for
(
int
i =
0
; i < index; i++)
41
System.out.printf(
"%d "
, data[i]);
42
43
System.out.printf(
"%d* "
, data[index]);
// indicate swap
44
45
// finish outputting array
46
for
(
int
i = index +
1
; i < data.length; i++)
47
System.out.printf(
"%d "
, data[i]);
48
49
System.out.printf(
"%n "
);
// for alignment
50
51
// indicate amount of array that's sorted
52
for
(
int
j =
0
; j < pass; j++)
53
System.out.print(
"-- "
);
Fig. 19.4
|
Sorting an array with selection sort. (Part 1 of 2.)