再玩一玩算法-1-查找

156 阅读1分钟

二分查找算法

使用场景:有序数列中查找item所在下标,不存在返回-1

核心逻辑:每次与数列中间的数字比较,比较后确定下一次循环比较在中点前还是后

 /**
 * 二分查找算法
 *
 * @param list 已知从小到达有序数组
 * @param item 需要查找的数据
 */
static int binary_search(int[] list, int item) {
    int low_position = 0;
    int high_position = list.length - 1;
    while (low_position <= high_position) {
        int mid = (low_position + high_position) / 2;
        int guess = list[mid];
        if (guess == item) return mid;
        else if (guess > item) {
            high_position = mid - 1;
        } else {
            low_position = mid + 1;
        }
    }
    return -1;
}