public class BubbleSort { public static void main(String[] args) { for (int i = 0; i < args.length; i++) { System.out.print(args[i] + " "); } bubbleSortRecursive(args, args.length - 1); System.out.println(); for (int i = 0; i < args.length; i++) { System.out.print(args[i] + " "); } } public static void bubbleSort(String[] list) { for (int i = list.length - 1; i > 1; i--) { for (int j = 0; j < i; j++) { if (list[j].compareTo(list[j + 1]) > 0) { String temp = list[j]; list[j] = list[j + 1]; list[j + 1] = temp; } } } } public static void bubbleSortRecursive(String[] list, int end) { if (end > 1) { bubbleSortRecursiveInner(list, 0, end); bubbleSortRecursive(list, end - 1); } } public static void bubbleSortRecursiveInner(String[] list, int start, int end) { if (start < end) { if (list[start].compareTo(list[start + 1]) > 0) { swap(list, start, start + 1); } bubbleSortRecursiveInner(list, start + 1, end); } } public static void swap(String[] list, int one, int two) { String temp = list[one]; list[one] = list[two]; list[two] = temp; } }