折半查找

来源:互联网 发布:科来mac地址扫描器 编辑:程序博客网 时间:2024/06/06 20:52

1、思想

从一堆有序数列中查找某一关键字所在位置。以由小到大数列为例:首先和这堆数列的中间数进行比较,若相等则此中间数位置即为所查找关键字位置;若比中间数大,则此关键字肯定在中间数位置之后;若比中间数小,则此关键字肯定在中间数位置之前;

2、代码

/** * 折半查找算法 *插值查找 *斐波那契查找 *  * @param src *            原始数据数组 * @param key *            要查找的关键字 * @return 返回找到的位置未找到返回-1 */private static <T extends Comparable<T>> int binarySearch(T[] src, T key) {int low = 0;int high = src.length - 1;int middle = low + (high - low) / 2;while (low <= high) {int compare = key.compareTo(src[middle]);if (compare == 0) {return middle;} else if (compare > 0) {low = middle + 1;} else if (compare < 0) {high = middle - 1;}middle = low + (high - low) / 2;}return -1;}


0 0