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.)
Search WWH ::




Custom Search