二分查找的前提是有序存储,利用顺序存储和元素排序
/** * 二分查找,查找成功,返回下标记 * @param values * @param begin * @param end * @param key * @param <T> * @return */ public static <T extends Comparable<? super T>> int binarySearch(T values[], int begin, int end, T key) { while(begin <= end) { int mid = (begin + end) / 2; if(key.compareTo(values[mid]) == 0) { return mid; } else if(key.compareTo(values[mid]) < 0) { end = mid -1; } else { begin = mid +1; } } return -1; } /** * * @param values * @param key * @param <T> * @return */ public static <T extends Comparable<? super T>> int binarySearch(T values[], T key) { return binarySearch(values,0,values.length -1, key); }