1. 程式人生 > >資料結構--二分查詢(Java版)

資料結構--二分查詢(Java版)

二分查詢:在一個有序陣列中查詢某個值。

一、迴圈實現

/**
     * 使用迴圈的方式實現二分查詢
     *
     * @param array
     * @param value
     * @return  找到了value就返回該值,否則返回null
     */
    public static Integer searchCirculation(int[] array, int value) {
        int low = 0;
        int high = array.length - 1;
        int middle;

        while
(low <= high) { middle = (low + high) / 2; if (value < array[middle]) { high = middle - 1; } else if (value > array[middle]) { low = middle + 1; } else { return array[middle]; } } return
null; }

二、遞迴實現

/**
     * 使用遞迴的方式實現二分查詢
     *
     * @param array
     * @param value
     * @return
     */
    public static Integer searchRecursive(int[] array, int value) {
        return searchRecursive(array, value, 0, array.length - 1);
    }

    private static Integer searchRecursive
(int[] array, int value, int low, int high) { if (high < low) { return null; } int middle = (low + high) / 2; if (value < array[middle]) { return searchRecursive(array, value, low, middle - 1); } else if (value > array[middle]) { return searchRecursive(array, value, middle + 1, high); } else { return array[middle]; } }