package chapter5;

/**
 * Title:        Chapter 5, "Arrays"
 * Description:  Examples for Chapter 2
 * Copyright:    Copyright (c) 2000
 * Company:      Armstrong Atlantic State University
 * @author Y. Daniel Liang
 * @version 1.0
 */
// SelectionSort.java: Sort numbers using selection sort

public class SelectionSort
{
  /**Main method*/
  public static void main(String[] args)
  {
    // Initialize the list
    double[] myList = {5.0, 4.4, 1.9, 2.9, 3.4, 3.5};

    // Print the original list
    System.out.println("My list before sort is: ");
    printList(myList);

    // Sort the list
    selectionSort(myList);

    // Print the sorted list
    System.out.println();
    System.out.println("My list after sort is: ");
    printList(myList);
  }

  /**The method for printing numbers*/
  static void printList(double[] list)
  {
    for (int i=0; i<list.length; i++)
      System.out.print(list[i] + "  ");
    System.out.println();
  }

  /**The method for sorting the numbers*/
  static void selectionSort(double[] list)
  {
    double currentMax;
    int currentMaxIndex;

    for (int i=list.length-1; i>=1; i--)
    {
      // Find the maximum in the list[0..i]
      currentMax = list[i];
      currentMaxIndex = i;

      for (int j=i-1; j>=0; j--)
      {
        if (currentMax < list[j])
        {
          currentMax = list[j];
          currentMaxIndex = j;
        }
      }

      // Swap list[i] with list[currentMaxIndex] if necessary;
      if (currentMaxIndex != i)
      {
        list[currentMaxIndex] = list[i];
        list[i] = currentMax;
      }
    }
  }
}