美文网首页
算法-查找-二分查找

算法-查找-二分查找

作者: TioSun | 来源:发表于2020-08-05 20:09 被阅读0次

二分查找(Binary Search)也叫折半查找,是一种日常生活中也很常见的查找方式。

举个生活中的小例子,我女朋友很喜欢让我猜她买的东西的价格。比如一个商品,肉眼估值大概在1000以内(假设价格是800)。猜价格的方式如下:

  1. 因为肉眼估值是1000以内的,即0-1000,我会先猜中间数500,然后得知猜低了
  2. 然后我可以知道价格在500-1000之间,再猜中间数750,得知还是猜低了
    重复这个步骤,就可以很快得知最终价格。

是不是很好理解二分查找的思想,二分查找是针对有序数组,通过每次将待查找值和数组候选区域的中间值做比较来判断是否相等,如果相等则查找成功,如果不相等,则缩小候选区为原来的一般,继续根据新的候选区的中间值比较,直到找到待查找值或者候选区域缩小为空。
上图

查找7
代码实现如下:
package search;

/**
 * @author TioSun
 * 二分查找
 */
public class BinarySearch {

    /**
     * 二分查找
     * @param a 待查找数组
     * @param n 数组容量
     * @param target 待查找值
     * @return 待查找值所处下标
     */
    public int search(int[] a, int n, int target) {

        int low = 0;
        int high = n - 1;

        while (low <= high) {
            // 不用(low+high)/2是为了防止整形溢出
            int mid = low + (high - low) / 2;

            if (mid == target) {
                return mid;
            } else if (mid > target) {
                // 中间值比目标值大,说明目标值可能在中间值的左半区域
                high = mid - 1;
            } else {
                // 中间值比目标值小,说明目标值可能在中间值的右半区域
                low = mid + 1;
            }
        }
        
        return -1;
    }
}

我们能够发现每次查找都会减半待查询区域,所以二分查找的时间复杂度为O(logn)

相关文章

  • 数据结构和算法--二分查找

    二分查找 二分查找的思想 二分查找(Binary Search)算法,也叫折半查找算法。 二分查找针对的是一个有序...

  • 可查找重复元素的二分查找算法

    可查找重复元素的二分查找算法 二分查找算法思想:又称为 折半查找,二分查找适合对已经排序好的数据集合进行查找。假设...

  • 数据结构与算法系列——二分查找

    二分查找算法的简单介绍 今天我们来学习一下二分查找算法,也叫做折半查找算法。使用二分查找算法的前提是数据需要是有序...

  • 算法

    一.算法基础--算法的特性 二.算法基础--算法的复杂度 三.顺序查找和二分查找 顺序查找 二分查找(前提是有序的...

  • 二分查找算法

    一、二分查找算法 二分查找算法又称为折半查找算法,它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序...

  • 二分查找算法

    @(算法集) 二分查找算法 二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,...

  • 15-二分查找(上):如何用最省内存的方式实现快速查找功能?

    一种针对有序数据集合的查找算法:二分查找(Binary Search)算法,也叫折半查找算法。 二分查找针对的是一...

  • python二分查找算法

    文章概述 二分查找法介绍 简单查找与二分查找对比 二分查找  二分查找算法主要思想:在有序列表中查找指定元素,先从...

  • 排序算法

    算法与数据结构基础 查找算法: 二分查找法: 简介:二分查找法又被称为折半查找法,用于预排序的查找问题 过程: 如...

  • day13

    查找算法 顺序查找 二分查找 差值查找 斐波那契查找 二分查找 前提数组必须是有序的。 升级 Interpolat...

网友评论

      本文标题:算法-查找-二分查找

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