二分搜索

38 阅读1分钟

Binary search

二分搜索是从已排序的数据列表中查找指定数据项的一种有效算法。它的工作原理是反复将列表中可能包含该项的部分分割成两半,直到将可能的位置缩小到只有一个。

假设我在想一个1到100之间的数字,就像猜谜游戏一样。如果你已经猜到25,我告诉你我的数字更高,你已经猜到81,我告诉你我的数字更低,那么26到80之间的数字是唯一合理的猜测。

Implementing code

通过二分搜索判断指定项是否存在

public static boolean exist(int[] arr, int num) {
    int left = 0, right = arr.length - 1, middle = 0;
    while (left <= right) {
        middle = left + (right - left) / 2;
        if (arr[middle] == num) {
            return true;
        } else if (arr[middle] < num) {
            left = middle + 1;
        } else {
            right = middle - 1;
        }
    }
    return false;
}

调用测试

int[] arr = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97};
boolean exist = exist(arr, 61);
System.out.println(exist);