import java.util.List;// > public class SearchAlgorithms { public static boolean linearSearch( List list, int value) { for (int data : list) { if (value == data) { return true; } } return false; } /* pre: list is sorted */ public static boolean sortedLinearSearch( List list, int value) { /* Attempts 1,2,3: int i = 0; while (list.get(i) < value && i < list.size() - 1) { i++; } return list.get(i) == value; */ for (int data : list) { if (value == data) { return true; } if (value < data) { return false; } } return false; } public static > boolean binarySearch( List list, T value) { return binarySearch(list, value, 0, list.size()); } private static > boolean binarySearch( List list, T value, int lo, int hi) { if (lo == hi) { return false; } if (lo == hi - 1) { return list.get(lo).compareTo(value) == 0; } int size = hi - lo; int mid = size/2 + lo; if (list.get(mid).compareTo(value) > 0) { //a.compareTo(b) > 0 // a - b > 0 // a > b return binarySearch(list, value, lo, mid); } else { return binarySearch(list, value, mid, hi); } } }