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

——二分查找——

时间:2024-11-02 12:19:04浏览次数:5  
标签:二分 right 下标 val mid li 查找 left

注意:代码中的left、right、mid都是下标,只有val代表的是值,区别好,才能更好理解代码。

一、代码实现

def fun(li,val):
    left = 0                        # 下标第一个
    right = len(li)-1               # 下标最后一个
    while left<=right:              # 查找范围,左边永远<=右边的位置
        mid = (left+right)//2       # 截半查找,引入第三个下标mid,用来比较val要查找值
        if li[mid]==val:            # 当列表的下标mid的值等于val的值,就说明找到了
            return mid
        elif li[mid]>val:           # 当mid在val的右边 ,说明mid大于val
            right=mid-1             # 再把位置减半,把right移动到mid的前一个
        elif li[mid]<val:           # 当mid在val的左边 ,说明mid小于val
            left=mid+1              # 再把位置减半,把left移动到mid的后一个
        else:
            print("没有值")
li = [1,2,3,4,5,6,7,8,9]
print(fun(li,4))

二、运行过程

 

详细图解:

标签:二分,right,下标,val,mid,li,查找,left
From: https://blog.csdn.net/CNY8888/article/details/143448803

相关文章

  • vs code常见的查找快捷键大全
    本文原文来自:vscode常见的查找快捷键大全-frozencola技术日志VSCode提供了多种方法来查找和导航文件,包括快速打开文件、文件资源管理器、全局搜索、查找符号、查找文件中的文本、查找并替换、文件导航和使用命令面板。通过熟练使用这些方法,你可以提高开发效率,更快地找到和打......
  • 二分法:高效查找的数学利器
    二分法:高效查找的数学利器二分法,又称为二分查找,是一种在已排序数组中查找特定元素的高效算法。其基本思想是通过每次将查找范围减半来迅速定位目标值。以下将详细介绍二分法的原理、实现步骤及其应用场景。一、基本原理二分法的工作原理如下:初始设置:设定两个指针,left指......
  • 整数二分 ——洛谷p9240冶炼金属
    #include<bits/stdc++.h>#defineendl'\n'#defineINF0x3f3f3f3f#defineintlonglongusingnamespacestd;constintN=1e4+10;inta[N],b[N];intn;//找左节点boolcheck_min(intmid){ for(inti=0;i<n;i++) { if(b[i]<a[i]/mid) return......
  • 异或运算解决查找数组中出现奇数次元素
            假设有一个数组只有一个元素出现奇数次,需要查找这个出现奇数次的元素,怎么使用时间复杂度为O(n),空间复杂度为O(1),来解决这道题。以下是使用异或来解决这道题:publicstaticintselectOddTimesNum(int[]nums){intresult=0;for(intnum:nums......
  • 二叉查找树知识简记
    二叉查找树( BST)一、概念1、简述一种能够将链表插入的灵活性和有序数组查找的高效性结合起来的符号表实现。具体来说,就是使用每个结点含有两个链接(链表中每个结点只含有一个链接)的二叉查找树来高效地实现符号表2、特点(1)在二叉查找树中,每个结点还包含了一个键和一个值,键之......
  • arc186a 二分图 建模
    先直接给出思路,把这个矩阵建成一个完全二分图,如果\(a_{i,j}=1\)的话从左边的i连向右边的j,否则从右边的j连向左边的i,此时左边\(i\)的出度表示第\(i\)行的\(1\)的个数,右边\(j\)的出度表示第\(j\)列1的个数。我们发现,如果图中存在一个环,那么将环上的边全部翻转所有点的度数依然不变,但......
  • 二分 & 三分
    二分查找多用于dp优化源码//自己写的时候推荐把边界放宽一点while(r-l>1){ //最后一个小于k的位置 intmid=l+r>>1; if(a[mid]<x)l=mid; elser=mid-1;}if(a[r]<x)l=r;STL库函数注意以下返回的都是指针#include<algorithm>upper_bound(a+1,a+n+1,k) //第一个大......
  • 【优选算法】——二分查找!
    目录1、二分查找2、在排序数组中查找元素的第一个和最后一个位置3、搜索插入位置4、x的平方根5、山脉数组的封顶索引6、寻找峰值 7、寻找旋转排序数组中的最小值8、点名9、完结散花1、二分查找给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 targ......
  • docker 安装gitea后,查找对应配置文件路径
    不能直接在系统的根目录访问/data/gitea/conf/app.ini,因为这个路径通常是在Docker容器内的。如果你想在主机上访问这个文件,必须首先确认它是否已挂载到主机的某个目录。如果你想访问app.ini,请按照以下步骤操作:检查Docker容器的挂载:使用以下命令查看容器的详细信息,特别......
  • k8s之调动pod到指定节点与创建多容器pod并查找pod日志
    在Kubernetes中,可以通过以下步骤将Pod调度到指定节点、创建多容器Pod,并查找Pod日志。1.将Pod调度到指定节点要将Pod调度到特定节点,可以使用nodeSelector或nodeAffinity进行调度。方法一:使用nodeSelector首先,需要确保节点具有指定的标签,然后在Pod配置......