美文网首页
二分查找

二分查找

作者: dreamkid | 来源:发表于2021-04-30 13:54 被阅读0次

    二分查找

    • 什么是二分查找
    • 实现原理
    什么是二分查找

    二分查找是从一个有序数组中找到目标元素(通常是找下标)的过程

    实现原理

    先来看两张图
    图例1


    image

    图例2


    image

    nums:有序数组
    fromIndex:起始指针,跟toIndex一起确定查找范围
    toIndex:结束指针,结合fromIndex确定查找范围
    mid:中间指针,指向查找范围中间位置的指针
    midValue:中间指针指向元素的值

    • 查找过程:

    首先指定查找范围是整个数组,然后找到中间指针指向的元素(midVal)的值跟目标值(如target)进行比对,如果midVal小于target,fromIndex指针从mid位置向右移动一位(图例2),反之toIndex从mid位置向左移动一位,重新确定查找范围,继续重复上述操作直到找到target等于midVal或者fromIndex>toIndex查找结束

    代码实现:
    public static int binarySearch(int[] nums, int target) {
            int fromIndex = 0;
            int toIndex = nums.length - 1;
            while (fromIndex <= toIndex) {
                int mid = (fromIndex + toIndex) >> 1;
                int midVal = nums[mid];
                if (midVal < target) {
                    fromIndex = mid + 1;
                } else if (midVal > target) {
                    toIndex = mid - 1;
                } else {
                    return mid;
                }
            }
            return -1;
        }
    

    相关文章

      网友评论

          本文标题:二分查找

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