Java Reference
In-Depth Information
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 pro-
gram carefully. Make sure that you understand exactly how it goes about sorting
its array of numbers.
Example 1−14: SortNumbers.java
package com.davidflanagan.examples.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]);
}
}
Search WWH ::




Custom Search