美文网首页
面试常考之手写二分查找

面试常考之手写二分查找

作者: Bury丶冬天 | 来源:发表于2020-08-04 21:50 被阅读0次

1. 循环实现

    /**
     * 循环实现二分查找
     *
     * @param src
     * @param target
     * @return
     */
    public static int binarySearch(int[] src, int target) {
        int left = 0, right = src.length - 1;
        while (left <= right) {
            int center = left + (right - left >>> 1);
            int centerValue = src[center];
            if (target > centerValue) {
                // 目标值比中间值大  说明在数组右侧  从 center + 1 查找 right
                left = center + 1;
            } else if (target < centerValue) {
                // 目标值比中间值小  说明在数组左侧  从 left 查找 center - 1
                right = center - 1;
            } else {
                return center;
            }
        }
        return -1;
    }

2. 递归实现

    /**
     * 递归实现二分查找
     *
     * @param src
     * @param target
     * @return
     */
    public static int binarySearch2(int[] src, int target) {
        return _binarySearch2(src, 0, src.length - 1, target);
    }

    private static int _binarySearch2(int[] src, int left, int right, int target) {
        if (left <= right) {
            int center = left + (right - left >>> 1);
            int centerValue = src[center];
            if (target > centerValue) {
                // 目标值比中间值大  说明在数组右侧  从 center + 1 查找 right
                return _binarySearch2(src, center + 1, right, target);
            } else if (target < centerValue) {
                // 目标值比中间值小  说明在数组左侧  从 left 查找 center - 1
                return _binarySearch2(src, left, center - 1, target);
            } else {
                return center;
            }
        } else {
            return -1;
        }
    }

相关文章

  • 面试常考之手写二分查找

    1. 循环实现 2. 递归实现

  • 二分查找算法及其扩展

    二分查找是面试中手写代码经常遇到的题目, 昨天还有同事说有个面试, 手写代码这一环节就是二分查找.在下面两个版本的...

  • 你真的会二分查找吗?

    二分查找 二分查找是一个基础的算法,也是面试中常考的一个知识点。二分查找就是将查找的键和子数组的中间键作比较,如果...

  • 二分查找专题 - 基础篇

    二分查找 - 基础篇 前言 从一个有序的数组中,找到某元素的值,通常思路就是二分查找。二分查找是一个常考的知识点。...

  • 深入浅出二分查找

    二分查找是面试常考的知识点,其方法是在有序序列中寻找满足特定条件的值,存在许多不同的变种,最近在刷Leetcode...

  • 剑指Offer.C++.code6-10

    (1)排序和查找是面试考察算法的重点,如二分查找、归并排序、快速排序等;(2)查找:顺序查找、二分查找、哈希表查找...

  • 算法 -- 二分查找

    前言 重要的事情说三遍,大厂面试必考,无论是前端还是移动还是后端,二分查找没有不考的!!! 二分查找思想 二分查找...

  • 二分查找

    在一次面试中,让手写二分查找代码,我开始写了一个递归版,面试官让写了一个非递归版的,这个很快也写出来了,最后面试官...

  • 大厂算法面试之leetcode精讲5.二分查找

    大厂算法面试之leetcode精讲5.二分查找 视频教程(高效学习):点击学习[https://xiaochen1...

  • 二分查找Binary Search 总结

    前言 二分查找作为程序员的一项基本技能,是面试官最常使用来考察程序员基本素质的算法之一,也是解决很多查找类题目的常...

网友评论

      本文标题:面试常考之手写二分查找

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