中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

Java中Binary Search如何實現

小樊
83
2024-07-09 05:02:28
欄目: 編程語言

在Java中,可以使用遞歸或迭代的方式實現二分搜索算法。以下是一個使用迭代方式實現的示例代碼:

public static int binarySearch(int[] arr, int target) {
    int left = 0;
    int right = arr.length - 1;

    while (left <= right) {
        int mid = left + (right - left) / 2;

        if (arr[mid] == target) {
            return mid;
        } else if (arr[mid] < target) {
            left = mid + 1;
        } else {
            right = mid - 1;
        }
    }

    return -1; // 如果找不到目標元素,則返回-1
}

在這段代碼中,arr是一個已經排序的數組,target是要查找的目標元素。在每一次迭代中,我們計算中間元素的索引mid,然后根據arr[mid]target的大小關系來更新leftright的值,直到找到目標元素或者left > right為止。如果找到目標元素,則返回它的索引,否則返回-1表示未找到。

另外,也可以使用遞歸的方式實現二分搜索算法,遞歸的實現方式如下:

public static int binarySearchRecursive(int[] arr, int target) {
    return binarySearchRecursive(arr, target, 0, arr.length - 1);
}

private static int binarySearchRecursive(int[] arr, int target, int left, int right) {
    if (left > right) {
        return -1;
    }

    int mid = left + (right - left) / 2;

    if (arr[mid] == target) {
        return mid;
    } else if (arr[mid] < target) {
        return binarySearchRecursive(arr, target, mid + 1, right);
    } else {
        return binarySearchRecursive(arr, target, left, mid - 1);
    }
}

在這段代碼中,binarySearchRecursive方法是一個重載方法,它接受一個數組arr和目標元素target作為參數,并調用了另一個私有方法binarySearchRecursive來執行實際的搜索。在私有方法中,我們使用遞歸的方式來執行二分搜索,直到找到目標元素或者left > right為止。如果找到目標元素,則返回它的索引,否則返回-1表示未找到。

0
万源市| 河津市| 青阳县| 泰来县| 北流市| 铜梁县| 化州市| 涟水县| 古交市| 九龙坡区| 垦利县| 庄河市| 鄂尔多斯市| 离岛区| 瑞丽市| 仙游县| 当雄县| 黔南| 丹江口市| 溧阳市| 綦江县| 景洪市| 新巴尔虎左旗| 灵石县| 龙井市| 册亨县| 二连浩特市| 沅陵县| 阳西县| 什邡市| 万州区| 威海市| 齐河县| 洪泽县| 兰州市| 丹凤县| 高唐县| 漠河县| 新和县| 新化县| 岢岚县|