import java.util.*; public class Sorter { /** Sorts a list of ints in place. * (e.g., the input list should be sorted when this method returns) */ public static void sortIntList(List list) { for (int i = 0; i < list.size(); i++) { int minIdx = i; for (int j = i; j < list.size(); j++) { // We COULD do this with list.get(j) < list.get(minIdx), but // we use compareTo to demonstrate that it still works. if (((Integer)list.get(j)).compareTo(list.get(minIdx)) < 0) { minIdx = j; } } int temp = list.get(i); list.set(i, list.get(minIdx)); list.set(minIdx, temp); } } /** Sorts a list of Strings in place. * (e.g., the input list should be sorted when this method returns) */ public static void sortStringList(List list) { for (int i = 0; i < list.size(); i++) { int minIdx = i; for (int j = i; j < list.size(); j++) { // Idea: // We want: list.get(j) >= list.get(minIdx) // Subtract: list.get(j) - list.get(minIdx) >= 0 // Replace: list.get(j).compareTo(list.get(minIdx)) >= 0 // Example: //list.get(j) < list.get(minIdx) //list.get(j) - list.get(minIdx) < 0 //list.get(j).compareTo(list.get(minIdx)) < 0 if (list.get(j).compareTo(list.get(minIdx)) < 0) { minIdx = j; } } String temp = list.get(i); list.set(i, list.get(minIdx)); list.set(minIdx, temp); } } public static void main(String[] args) { List intList = new ArrayList(); intList.add(1); intList.add(42); intList.add(100); intList.add(10); intList.add(3); System.out.println("Unsorted intList: " + intList); sortIntList(intList); System.out.println("Sorted intList: " + intList); System.out.println(); List stringList = new ArrayList(); stringList.add("1"); stringList.add("42"); stringList.add("100"); stringList.add("10"); stringList.add("3"); System.out.println("Unsorted stringList: " + stringList); sortStringList(stringList); System.out.println("Sorted stringList: " + stringList); } }