算法查找——二分查找

简介: 算法查找——二分查找

🟡前言


21天挑战赛第二周,本文主要是讲述有关二分查找的知识


活动地址CSDN21天学习挑战赛


🟡概述


二分查找适用于有序数组中


e57a64d319d6427a8e0f1dc71df96bab.png


如下图所示,当我们要找到元素79时,先找数组的当中的元素81,由于79比81小,所以在左侧找(红框),重新定max和mid再寻找


5e812d41c21d42c58c93a3a3b178118e.png


🟡解题思路


  1. 先查找数组中最中间的元素(下标值向下取整)
  2. 如果要查找的元素值比中间的元素大,就将最大值改为中间值减一
    max = mid - 1
  3. 如果要查找的元素值比中间的元素小,就将最小值改为中间值加一
    min = mid + 1
  4. 重复上述步骤,直至找到所要查找的元素


🟡代码实现


public class BinarySearch {
    public static void main(String[] args) {
        // input data
        int[] a = {7,23,79,81,103,127,131,147};
        int key = 11;
        // 调用算法,并输出结果
        int result = search(a, key);
        System.out.println(result);
    }
    private static int search(int[] a,int key){
        // 初始化变量
        int min = 0;
        int max = a.length - 1;
        //通过循环找到要查找的元素
        while (true){
          int mid = (max + min) / 2 ;
          if(min > max){
        return -1;
      }
            // 情况1:比key大
            }else if(a[mid] > key){
                max = mid - 1;
            // 情况2:比key小     
            }else if(a[mid] < key){
                min = mid + 1;
            }
            //情况3:找到了
      else{
        return mid;
      }
        } 
    }
}


🟡结语


二分查找较简单,但是要注意数组一定要是有序的

相关文章
|
2月前
|
存储 算法 索引
【优选算法】—— 二分查找
【优选算法】—— 二分查找
|
2月前
|
算法 程序员 数据处理
算法与人生 揭秘C语言中高效搜索的秘诀——二分查找算法详解
算法与人生 揭秘C语言中高效搜索的秘诀——二分查找算法详解
|
3月前
|
人工智能 算法 测试技术
【动态规划】【二分查找】C++算法 466 统计重复个数
【动态规划】【二分查找】C++算法 466 统计重复个数
|
4月前
|
算法 测试技术 C#
【KMP】【二分查找】【C++算法】100207. 找出数组中的美丽下标 II
【KMP】【二分查找】【C++算法】100207. 找出数组中的美丽下标 II
|
4月前
|
算法 测试技术 C#
C++二分查找算法:包含每个查询的最小区间
C++二分查找算法:包含每个查询的最小区间
|
4月前
|
存储 算法 Java
【算法系列篇】二分查找——这还是你所知道的二分查找算法吗?
【算法系列篇】二分查找——这还是你所知道的二分查找算法吗?
|
20天前
|
算法 测试技术 Serverless
【二分查找】【C++算法】378. 有序矩阵中第 K 小的元素
【二分查找】【C++算法】378. 有序矩阵中第 K 小的元素
|
2月前
|
算法 索引
算法思想总结:二分查找算法
算法思想总结:二分查找算法
|
2月前
|
算法 测试技术 API
深入理解二分查找算法(一)
深入理解二分查找算法(一)
|
3月前
|
机器学习/深度学习 算法 Java
【数据结构查找算法篇】----二分查找【实战项目】
【数据结构查找算法篇】----二分查找【实战项目】
27 1