Selection Sort In Java
- 0,1,…, n-1 index numbers are exchanged with smallest number from index numbers: 1,2,…,n
- Best Case Time Complexity: O(n^2)
- Worst Case Time Complexity: O(n^2)
- Space Complexity: O(1)
- Stable
public class SelectionSortInJava { public static void SelectionSort(int[] arr){ for (int i = 0; i < arr.length - 1; i++) // excludes last element { int index = i; for (int j = i + 1; j < arr.length; j++){ // excludes first element if (arr[j] < arr[index]){ // find index of element smaller than key && smallest in the group of numbers to the right of key index = j; // searching for lowest index } } int smallNumber = arr[index]; // temporary variable to store smallest number arr[index] = arr[i]; // put key in place of smallest number arr[i] = smallNumber; // smallest number starts from index 0 which is why i = 0 in for loop } } public static void main(String[] args){ int[] arr = {2,13,2,1,42,10,57,21}; System.out.println("Unsorted:"); for(int i:arr){ System.out.print(i+" "); } System.out.println(); SelectionSort(arr); System.out.println("Sorted:"); for(int i:arr){ System.out.print(i+" "); } } } /* OUTPUT: Unsorted: 2 13 2 1 42 10 57 21 Sorted: 1 2 2 10 13 21 42 57 */
Selection Sort Analysis
public class SelectionSortAnalysis { public static void SelectionSort(int[] arr){ for (int i = 0; i < arr.length - 1; i++) // excludes last element { int index = i; System.out.println(); System.out.println("---{ " + arr[index] +" }---"); System.out.println(); for (int j = i + 1; j < arr.length; j++){ // excludes first element if (arr[j] < arr[index]){ // find index of element smaller than key && smallest in the group of numbers to the right of key System.out.println(arr[j] + " < " + arr[index] + " : YES"); index = j; // searching for lowest index } } int smallNumber = arr[index]; // temporary variable to store smallest number arr[index] = arr[i]; // put key in place of smallest number arr[i] = smallNumber; // smallest number starts from index 0 which is why i = 0 in for loop System.out.println("PASS "+ (i+1) + " : "); for(int x:arr){ System.out.print(x+" "); } } } public static void main(String[] args){ int[] arr = {2,13,2,1,42,10,57,21}; System.out.println("------------"); System.out.println("Unsorted:"); System.out.println("------------"); for(int i:arr){ System.out.print(i+" "); } System.out.println(); SelectionSort(arr); System.out.println(); System.out.println("------------"); System.out.println("Sorted:"); System.out.println("------------"); for(int i:arr){ System.out.print(i+" "); } } } /* ------------ Unsorted: ------------ 2 13 2 1 42 10 57 21 ---{ 2 }--- 1 < 2 : YES PASS 1 : 1 13 2 2 42 10 57 21 ---{ 13 }--- 2 < 13 : YES PASS 2 : 1 2 13 2 42 10 57 21 ---{ 13 }--- 2 < 13 : YES PASS 3 : 1 2 2 13 42 10 57 21 ---{ 13 }--- 10 < 13 : YES PASS 4 : 1 2 2 10 42 13 57 21 ---{ 42 }--- 13 < 42 : YES PASS 5 : 1 2 2 10 13 42 57 21 ---{ 42 }--- 21 < 42 : YES PASS 6 : 1 2 2 10 13 21 57 42 ---{ 57 }--- 42 < 57 : YES PASS 7 : 1 2 2 10 13 21 42 57 ------------ Sorted: ------------ 1 2 2 10 13 21 42 57 */