package com.interview.basics.search.array.sorted; import com.interview.basics.search.array.ArraySearcher; import java.util.Arrays; /** * Created_By: stefanie * Date: 14-11-2 * Time: 下午3:13 */ public class BinaryArraySearcher<T extends Comparable<T>> extends ArraySearcher<T>{ protected BinaryArraySearcher(T[] input) { super(input); Arrays.sort(input); } @Override public T find(T element) { return find(element, 0, input.length - 1); } private T find(T element, int low, int high){ if(low > high) return null; int mid = (high + low) / 2; int cmp = element.compareTo(input[mid]); if(cmp == 0) return input[mid]; else if(cmp < 0) return find(element, low, mid - 1); else return find(element, mid + 1, high); } }