package Sorts; public class SelectionSort implements SortAlgorithm { /** * Generic selection sort algorithm in increasing order. * * @param arr the array to be sorted. * @param the class of array. * @return sorted array. */ @Override public > T[] sort(T[] arr) { int n = arr.length; for (int i = 0; i < n - 1; i++) { int minIndex = i; for (int j = i + 1; j < n; j++) { if (arr[minIndex].compareTo(arr[j]) > 0) { minIndex = j; } } if (minIndex != i) { T temp = arr[i]; arr[i] = arr[minIndex]; arr[minIndex] = temp; } } return arr; } /** Driver Code */ public static void main(String[] args) { Integer[] arr = {4, 23, 6, 78, 1, 54, 231, 9, 12}; SelectionSort selectionSort = new SelectionSort(); Integer[] sorted = selectionSort.sort(arr); for (int i = 0; i < sorted.length - 1; ++i) { assert sorted[i] <= sorted[i + 1]; } String[] strings = {"c", "a", "e", "b", "d"}; String[] sortedStrings = selectionSort.sort(strings); for (int i = 0; i < sortedStrings.length - 1; ++i) { assert strings[i].compareTo(strings[i + 1]) <= 0; } } }