首页 > 其他分享 >二分查找

二分查找

时间:2023-02-23 15:13:26浏览次数:30  
标签:二分 arr int mid 索引 查找 left

1.前提:有已排序数组A(假设已经做好)
2.定义左边界L、右边界 R,确定搜索范围,循环执行二分查找(3、4两步)2.
3.获取中间索引 M = Floor((L+R) /2)
4.中间索引的值 A[M] 与待搜索的值T进行比较
   A[M] ==T 表示找到,返回中间索引

   A[M]>T,中间值右侧的其它元素都大于 T,无需比较,中间索引左边去找,M-1 设置为右边界,重新查找

   A[M]<T,中间值左侧的其它元素都小于T,无需比较,中间索引右边去找,M +1设置为左边界,重新查找

5.当L>R 时,表示没有找到,应结束循环

 

public static int binarySearch(int[] arr, int target) {

int left = 0, right = arr.length - 1;

while (left <= right) {

int mid = (left + right) / 2;

if (arr[mid] == target) {

return mid;

}else if (arr[mid] < target) {

left = mid + 1;

}else {

right = mid - 1;

  }

} return -1; // 没有找到

}

标签:二分,arr,int,mid,索引,查找,left
From: https://www.cnblogs.com/ithzh/p/17148020.html

相关文章

  • 【YBT2023寒假Day12 A】我的世界(二分)(主席树)
    我的世界题目链接:YBT2023寒假Day12A题目大意有n个数,每一秒每个数都会减小1,而且你可以选一个数让它减小x,小于0的数会变成0。给你s秒,问你s秒操作后所有数中......
  • 二分查找法学习心得(如何具体问题具体分析)
    题目:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为O(logn)的算法......
  • 第一个错误的版本(二分查找法)
    题目:你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本......
  • c++ string find 查找失败时 应该注意的地方
    当字符串查找失败的时候#include<vector>#include<iostream>#include<string>#include<algorithm>#include<limits.h>usingnamespacestd;intmain(){......
  • 带标号二分图计数
    本文中\(f[i]\)表示\([x^i]f(x)\)带标号的二分图的数量不方便用一个式子直接写出,我们考虑用别的统计去推出它。我们先求出连通二分图的生成函数,再求任意二分图的生成......
  • 二分法查找数字位置
    二分法举例请实现无重复数字的升序数组的二分查找给定一个元素升序的、无重复数字的整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在......
  • 体验AI乐趣:基于AI Gallery的二分类猫狗图片分类小数据集自动学习
    摘要:直接使用AIGallery里面现有的数据集进行自动学习训练,很简单和方便,节约时间,不用自己去训练了,AIGallery里面有很多类似的有趣数据集,也非常好玩,大家一起试试吧。本文......
  • 每日一练(剑指offer)二维数组中的查找
    描述在一个二维数组array中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个......
  • 插入二分排序
    一、\(STL\)版本的插入二分排序#include<bits/stdc++.h>usingnamespacestd;constintN=6;inta[N]={3,2,1,4,5,7};voidBinInsertSort(inta[],intn......
  • python 二分查找算法
    python二分查找算法 楔子如果有这样一个列表,让你从这个列表中找到66的位置,你要怎么做?l=[2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,......