import java.util.ArrayList; import java.util.List; import javax.swing.JOptionPane; /** * * @author Bill Kraynek */ public class ListRecursionExamples { /** * @param args the command line arguments */ public static void main(String[] args) { List numbers = new ArrayList(); numbers.add(37); numbers.add(7); numbers.add(3); numbers.add(5); numbers.add(373); numbers.add(2); numbers.add(15); numbers.add(25); numbers.add(25); numbers.add(225); numbers.add(125); List save = new ArrayList(numbers); String out = numbers + "\n"; BSortInts(numbers); out += numbers + "\n"; numbers = new ArrayList(save); ISortInts(numbers); out += numbers + "\n"; numbers = new ArrayList(save); ISortWithSubList(numbers); out += numbers + "\n"; reverseInts(numbers); out += numbers + "\n"; JOptionPane.showMessageDialog(null, out); numbers = new ArrayList(save); out = ""; List strings = new ArrayList(); strings.add("abc"); strings.add("bc"); strings.add("zabc"); strings.add("a"); strings.add("def"); strings.add("defg"); numbers = new ArrayList(save); out += numbers + "\n" + strings + "\n"; ISort(numbers); ISort(strings); out += numbers + "\n" + strings + "\n"; reverse(numbers); reverse(strings); out += numbers + "\n" + strings + "\n"; JOptionPane.showMessageDialog(null, out); } static void BSortInts(List list) { BSortHelperInts(list, list.size() - 1); } static void BSortHelperInts(List list, int right) { if (right <= 0) { return; } for (int i = 0; i < right; i++) { if (list.get(i) > list.get(i + 1)) { int hold = list.get(i); list.set(i, list.get(i + 1)); list.set(i + 1, hold); }// end if }// end for BSortHelperInts(list, right - 1); }// end helper static void ISortInts(List list) { ISortHelperInts(list, list.size() - 1); } static void ISortHelperInts(List list, int right) { if (right <= 0) { return; } ISortHelperInts(list, right - 1); int hold = list.get(right); int i = right - 1; while (i >= 0 && hold < list.get(i)) { list.set(i + 1, list.get(i)); i--; }// end while list.set(i + 1, hold); }// end helper static void ISortWithSubList(List list) { if (list.size() <= 1) { return; } ISortWithSubList(list.subList(0, list.size() - 1)); int hold = list.get(list.size() - 1); int i = list.size() - 2; while (i >= 0 && hold < list.get(i)) { list.set(i + 1, list.get(i)); i--; }// end while list.set(i + 1, hold); }// end ISort static void reverseInts(List list) { if (list.size() <= 1) { return; } int hold = list.get(0); list.set(0, list.get(list.size() - 1)); list.set(list.size() - 1, hold); reverseInts(list.subList(1, list.size() - 1)); }// end reverse static > void ISort(List list) { if (list.size() <= 1) { return; } ISort(list.subList(0, list.size() - 1)); T hold = list.get(list.size() - 1); int i = list.size() - 2; while (i >= 0 && hold.compareTo(list.get(i)) < 0) { list.set(i + 1, list.get(i)); i--; }// end while list.set(i + 1, hold); }// end ISort static void reverse(List list) { if (list.size() <= 1) { return; } T hold = list.get(0); list.set(0, list.get(list.size() - 1)); list.set(list.size() - 1, hold); reverse(list.subList(1, list.size() - 1)); }// end reverse }