public class SelectionSort { public static void main(String[] args) { for (int i = 0; i < args.length; i++) { System.out.print(args[i] + " "); } selectionSortRecursive(args, 0); System.out.println(); for (int i = 0; i < args.length; i++) { System.out.print(args[i] + " "); } } public static void selectionSort(String[] args) { for (int i = 0; i < args.length - 1; i++) { int min = i; for (int j = i + 1; j < args.length; j++) { if (args[j].compareTo(args[min]) < 0) { min = j; } } swap(args, i, min); } } public static void selectionSortRecursive(String[] args, int start) { if (start < args.length - 1) { findMin(args, start, start + 1, start); selectionSortRecursive(args, start + 1); } } private static void findMin(String[] args, int original, int index, int min) { if (index < args.length) { if (args[index].compareTo(args[min]) < 0) { findMin(args, original, index + 1, index); } else { findMin(args, original, index + 1, min); } } else { swap(args, original, min); } } public static void swap(String[] args, int first, int second) { String temp = args[first]; args[first] = args[second]; args[second] = temp; } }