美文网首页
二分查找的循环写法与递归写法

二分查找的循环写法与递归写法

作者: 好学人 | 来源:发表于2020-07-24 10:12 被阅读0次

二分查找

二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但二分查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。

适用范围:有序列表

时间复杂度:O(logn)

循环写法

/**
 * 二分查找的循环写法(升序列表)
 */
public int binarySearch(int[] array, int target) {
    int left = 0;
    int right = array.length - 1;
    while (left <= right) { // 在候选区有效时循环查找
        int middle = (left + right) / 2;
        if (array[middle] == target) {
            return middle; // 找到目标元素
        } else if (array[middle] > target) {
            // 在左侧区域查找
            left = left;
            right = middle - 1;
        } else {
            // 在右侧区域查看
            left = middle + 1;
            right = right;
        }
    }
    return -1; // 未找到目标元素
}

递归写法

/**
 * 二分查找的递归写法(升序列表)
 */
public int binarySearch(int[] array, int target, int left, int right) {
    if (left > right) {
        return -1; // 未找到目标元素
    }
    int middle = (left + right) / 2;
    if (array[middle] == target) {
        return middle; // 找到目标元素
    } else if (array[middle] > target) {
        return binarySearch(array, target, left, middle - 1); // 在左侧区域递归查找
    } else {
        return binarySearch(array, target, middle + 1, right); // 在右侧区域递归查找
    }
}

相关文章

  • 二分查找的循环写法与递归写法

    二分查找 二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但二分查找要求线性表必须...

  • 二分查找专题

    1 二分查找jdk源码 时间O(logn)空间O(1) 递归式写法: 时间和空间都是O(logn) 2. 二分插入...

  • 递归引发的血案

    正确写法: 错误写法: 两种DFS递归的写法差异在于: 错误的写法把if...return写在了for循环里面,没...

  • 二分法模板

    【推荐:】二分查找的迭代Iterative写法(2)重点掌握 [ left, right ) 半开半闭区间迭代写法...

  • 二分查找

    网上找到的图片便于理解 二分查找递归实现与循环实现代码: /** 二分查找 1.二分查找又称折半查找,它是一种效率...

  • 算法 -- 二分查找

    二分查找有两种实现:通过递归或循环 二分查找的前提是先要保证数组有序 递归 循环 github 完整代码 -- b...

  • 二分查找(binary search)的四种实现方式

    以下为javascript实现二分查找(binary search)的四种实现方式,其中第一种为递归写法,其他三种...

  • 查找算法

    参考资料 有序查找 二分查找 循环版 递归版 无序查找 顺序查找

  • LC-二分查找

    LC704 LC33二分查找基础题:卡了很久的细节 真的不擅长抠细节两种写法:递归法 非递归法 某些情况需要左右都...

  • 2.3 二分查找的递归与非递归实现

    Chapter2: 时间复杂度分析、递归、查找与排序 3. 二分查找的递归与非递归实现 二分查找即折半查找,为查找...

网友评论

      本文标题:二分查找的循环写法与递归写法

      本文链接:https://www.haomeiwen.com/subject/gdadlktx.html