package sort;

public class Search {
    
    public static int linearSearch(Comparable [] list, Comparable val){
        for (int i = 0; i < list.length; i++)
           if (list[i].compareTo(val) == 0)
              return i;
        return -1;
    }
    
    public static int linearSearch(int [] list, int val){
        for (int i = 0; i < list.length; i++)
           if (list[i] == val)
              return i;
        return -1;
    }
    
    public static int binarySearch(Comparable [] list, Comparable value) {
        int low = 0;
        int high = list.length - 1;
        while (low <= high) {
           int mid = (low + high)/2;
           if (list[mid].equals(value))
              return mid;
           else if (list[mid].compareTo(value) < 0)
              low = mid + 1;
           else
              high = mid - 1;
        }
        return -1;
     }

    public static int binarySearch(int [] list, int value) {
        int low = 0;
        int high = list.length - 1;
        while (low <= high) {
           int mid = (low + high)/2;
           if (list[mid] == value)
              return mid;
           else if (list[mid] < value)
              low = mid + 1;
           else
              high = mid - 1;
        }
        return -1;
     }
}

