Java Reference
In-Depth Information
Self-Test Exercises
20. How would you need to change the method sort in Display 6.11 so that it
can sort an array of values of type double into decreasing order, instead of
increasing order?
21. If an array of int values has a value that occurs twice (such as b[0] == 42 and
b[7] == 42 ) and you sort the array using the method SelectionSort.sort ,
will there be one or two copies of the repeated value after the array is sorted?
Display 6.11
Selection Sort Class (part 1 of 2)
1 public class SelectionSort
2 {
3 /**
4 Precondition: numberUsed <= a.length;
5 The first numberUsed indexed variables have values.
6 Action: Sorts a so that a[0] <= a[1] <= ... <= a[numberUsed - 1].
7 */
8 public static void sort( double [] a, int numberUsed)
9 {
10 int index, indexOfNextSmallest;
11 for (index = 0; index < numberUsed - 1; index++)
12 { //Place the correct value in a[index]:
13 indexOfNextSmallest = indexOfSmallest(index, a, numberUsed);
14 interchange(index,indexOfNextSmallest, a);
15 //a[0] <= a[1] <= ...<= a[index] and these are the smallest
16 //of the original array elements. The remaining positions
17 //contain the rest of the original array elements.
18 }
19 }
20 /**
21 Returns the index of the smallest value among
22 a[startIndex], a[startIndex+1], ... a[numberUsed - 1]
23 */
24 private static int indexOfSmallest( int startIndex,
25
double [] a, int numberUsed)
26 {
27 double min = a[startIndex];
28 int indexOfMin = startIndex;
29 int index;
30 for (index = startIndex + 1; index < numberUsed; index++)
31 if (a[index] < min)
32 {
33 min = a[index];
34 indexOfMin = index;
35 //min is smallest of a[startIndex] through a[index]
36 }
37 return indexOfMin;
38 }
 
Search WWH ::




Custom Search