SelectionSort.java
1    package Algorithms;
2    
3    import java.util.ArrayList;
4    import java.util.Scanner;
5    
6    public class SelectionSort {
7        public static void main(String [] args) {
8            // Read some numbers from the user and store them in a list
9            ArrayList<Integer> numbers = readNumbersFromOutput();
10   
11           // Echo Check
12           System.out.println("Unsorted List:" + numbers);
13           // sort the list
14           sort(numbers);
15   
16           // Display it
17           System.out.println("Sorted list:" + numbers);
18       }
19   
20       private static ArrayList<Integer> readNumbersFromOutput() {
21           // Store numbers
22           ArrayList<Integer>numbers= new ArrayList<>();
23   
24           //Prepare to read numbers
25           Scanner scanner= new Scanner(System.in);
26           System.out.println("Enter some positive integers"+ "followed by a negative number");
27   
28           // Read and store
29           Integer readnumbers= scanner.nextInt();
30   
31           while(readnumbers>0) {
32               numbers.add(readnumbers);
33               readnumbers = scanner.nextInt();
34           }
35           return numbers;
36       }
37   
38       private static Integer MaxValue(ArrayList<Integer>numbers) {
39           //Intial champion
40           Integer champion = numbers.get(0);
41           // Look at each element as the challanger, and if the challenger is > champion, then replace
42   
43           for (Integer challanger : numbers) {
44               if (challanger > champion) {
45                   champion = challanger;
46               }
47           }
48           return champion;
49       }
50       private  static void sort(ArrayList<Integer>numbers){
51           for (int limit= numbers.size()-1;limit>=1;limit-- ){
52               int mx = maxIndex(numbers, limit);
53               swap(numbers, mx, limit);
54               // Find the index of max value
55   
56   
57           }
58       }
59       private static Integer maxIndex(ArrayList<Integer>numbers, int limit){
60           Integer champion= numbers.get(0);
61           int cx=0;// champion index
62           for(int i=0; i<=limit; i++){
63               Integer challanger = numbers.get(i);
64               if(challanger> champion){
65                   champion= challanger;
66                   cx=1;
67               }
68           }
69           return  cx;
70       }
71       private static void swap(ArrayList<Integer>numbers,int mx, int x){
72        int temp= numbers.get(mx);
73        numbers.set(mx,numbers.get(x));
74        numbers.set(x, temp);
75       }
76   }
77