package algorithms; import java.util.ArrayList; import java.util.Scanner; public class SlectionSort { public static void main (String[] args){ // Read some numbers from the user's input and store them to the list ArrayList<Integer> numbers = readNumbersFromStandInput(); System.out.println("Unsorted list :" + numbers); // Sort the list Sort(numbers); // Display it System.out.println("Sorted list :" + numbers); } private static void Sort(ArrayList<Integer> numbers) { // Begin with limit at the end of numbers and decrement it until we're at the begining for (int limit = numbers.size()-1; limit > 1; limit--){ // Find the index of the max value in the unsorted point of the list int mx = maxIndex(numbers,limit); // Swap the element at the max index with the element swap(numbers,mx,limit); } } private static Integer maxIndex(ArrayList<Integer> numbers, int limit) { // Initial champion Integer champion = numbers.get(0); int cx = 0; for(int i = 0; i <= limit; i++){ Integer challenger = numbers.get(i); if (challenger > champion){ champion = challenger; cx = i; } } // Return Champion Index return cx; } private static ArrayList<Integer> readNumbersFromStandInput() { // Establish a place to store the numbers ArrayList<Integer> numbers = new ArrayList<>(); // Prepare to read the numbers Scanner scanner = new Scanner(System.in); System.out.println("Enter some positive integers, " + "followed by a negative integers"); // Read and store the numbers in the ArrayList Integer readNumber = scanner.nextInt(); while (readNumber >= 0) { numbers.add(readNumber); readNumber = scanner.nextInt(); } // Return the numbers return numbers; } private static void swap(ArrayList<Integer> numbers, int mx, int x){ Integer temp = numbers.get(mx); numbers.set(mx, numbers.get(x)); numbers.set(x,temp); } }