1.14 Sorting Numbers
Example 1-14 implements a simple (but inefficient)
algorithm for sorting an array of numbers. This example
doesn't introduce any new elements of Java syntax,
but it is interesting because it reaches a real-world level of
complexity. The sorting algorithm manipulates array entries using an
if statement within a for loop
that is itself within another for loop. You should
take the time to study this short program carefully. Make sure that
you understand exactly how it goes about sorting its array of
numbers.
Example 1-14. SortNumbers.java
package je3.basics;
/**
* This class demonstrates how to sort numbers using a simple algorithm
**/
public class SortNumbers {
/**
* This is a very simple sorting algorithm that is not very efficient
* when sorting large numbers of things
**/
public static void sort(double[ ] nums) {
// Loop through each element of the array, sorting as we go.
// Each time through, find the smallest remaining element, and move it
// to the first unsorted position in the array.
for(int i = 0; i < nums.length; i++) {
int min = i; // holds the index of the smallest element
// find the smallest one between i and the end of the array
for(int j = i; j < nums.length; j++) {
if (nums[j] < nums[min]) min = j;
}
// Now swap the smallest one with element i.
// This leaves all elements between 0 and i sorted.
double tmp;
tmp = nums[i];
nums[i] = nums[min];
nums[min] = tmp;
}
}
/** This is a simple test program for the algorithm above */
public static void main(String[ ] args) {
double[ ] nums = new double[10]; // Create an array to hold numbers
for(int i = 0; i < nums.length; i++) // Generate random numbers
nums[i] = Math.random( ) * 100;
sort(nums); // Sort them
for(int i = 0; i < nums.length; i++) // Print them out
System.out.println(nums[i]);
}
}
|