Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 2

// Simple Java implementation of selection sort

//
// Michael S. Tashbook, Stony Brook University
import java.util.*;
public class SelectionSort
{
public static void main (String [ ] args)
{
System.out.println("Generating a list of random values...");
int [ ] list = createRandomArray(10); // change 10 to the # of your choi
ce
System.out.println("Original (unsorted) list:");
printArray(list);
System.out.println();
System.out.println("Sorting list using selection sort...");
selectionSort(list);
System.out.println();
System.out.println("Sorted list:");
printArray(list);
System.out.println();
}
static void selectionSort (int [ ] list)
{
// Assume that the first element of the list is already sorted
printArrayMidSort(list, list.length);
int lastUnsorted = list.length - 1;
while (lastUnsorted > 0)
{
int largestPosition = findLargestPosition(list, lastUnsorted);
// Swap largest and last values
int temp = list[lastUnsorted];
list[lastUnsorted] = list[largestPosition];
list[largestPosition] = temp;
printArrayMidSort(list, lastUnsorted);
lastUnsorted--; // shrink unsorted region by 1 element
}
}
// Helper methods
static int [] createRandomArray(int size)
{
// Create and return a list of 'size' randomly-generated integers betwee
n 1 and 100
int [ ] numbers = new int[size];
Random r = new Random();
for (int i = 0; i < size; i++)
{
int val = r.nextInt(100) + 1;

numbers[i] = val;
}
return numbers;
}
static void printArray (int [ ] list)
{
for (int i = 0; i < list.length; i++)
{
System.out.print(list[i]);
if (i < (list.length - 1))
{
System.out.print(", ");
}
}
System.out.println();
}
static void printArrayMidSort (int [ ] list, int startOfSorted)
{
System.out.print("[ ");
for (int i = 0; i < startOfSorted; i++)
{
System.out.print(list[i] + " ");
}
System.out.print("][ ");
for (int i = startOfSorted; i < list.length; i++)
{
System.out.print(list[i] + " ");
}
System.out.println("]");
}
static int findLargestPosition (int [ ] list, int lastPosToConsider)
{
int largestPos = 0;
for (int i = 1; i <= lastPosToConsider; i++)
{
if (list[i] > list[largestPos])
{
largestPos = i; // found a new largest value
}
}
return largestPos;
}
}

You might also like