二分查找(折半查找)

二分,查找,折半 · 浏览次数 : 6

小编点评

**博客地址:**https://www.cnblogs.com/zylyehuo/时间复杂度:O(logn)# **_*_coding:utf-8_*_def binary_search(li, val): ** left = 0 right = len(li) - 1 ** 这表示查找的范围为数组的左侧和右侧。 **while left <= right:** 这表示在当前搜索范围内搜索的范围不为空。 **if li[mid] == val:** 如果找到匹配的值,则返回搜索的中间位置。 **elif li[mid] > val:** 如果查找的值在搜索的中间左侧,则右位置应减小。 **else:** 如果查找的值在搜索的中间右侧,则左位置应增大。 **else:** 如果找不到匹配的值,则返回 `None`。 **return None** **归纳总结:** 该函数使用二分搜索算法来查找数组中的值。算法通过不断缩小搜索范围来逐步找到匹配的值。时间复杂度为 O(logn),其中 n 是数组的大小。

正文

博客地址:https://www.cnblogs.com/zylyehuo/

时间复杂度:O(logn)

# _*_coding:utf-8_*_

def binary_search(li, val):
    left = 0
    right = len(li) - 1
    while left <= right:  # 候选区有值
        mid = (left + right) // 2
        if li[mid] == val:
            return mid
        elif li[mid] > val:  # 带查找的值在mid左侧
            right = mid - 1
        else:  # li[mid] < val 带查找的值在mid右侧
            left = mid + 1
    else:
        return None


li = list(range(1000))
print(binary_search(li, 389))

与二分查找(折半查找)相似的内容:

二分查找(折半查找)

博客地址:https://www.cnblogs.com/zylyehuo/ 时间复杂度:O(logn) # _*_coding:utf-8_*_ def binary_search(li, val): left = 0 right = len(li) - 1 while left <= right

详解二分查找

二分法详解 大家好,我是Weekoder! 这是我的第一篇文章,如果有做的不好的地方,请见谅,我会尽力改正。 本文中的图片截取于网络视频,非恶意搬运。 二分法,是一个高效的算法,查找一个数的时间复杂度只需要\(O(\log n)\),大大优化了朴素算法(从头到尾地遍历)\(O(n)\)的线性复杂度。

LeetCode 周赛 338,贪心 / 埃氏筛 / 欧氏线性筛 / 前缀和 / 二分查找 / 拓扑排序

本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问。 大家好,我是小彭。 上周末是 LeetCode 第 338 场周赛,你参加了吗?这场周赛覆盖的知识点很多,第四题称得上是近期几场周赛的天花板。 小彭的技术交流群 02 群来了,公众号回复 “加群” 加入我们~

文心一言 VS 讯飞星火 VS chatgpt (102)-- 算法导论9.3 8题

八、用go语言,设 X[1..n]和 Y[1..n]为两个数组,每个都包含n个有序的元素。请设计一个 O(lgn)时间的算法来找出数组 X和Y中所有 2n 个元素的中位数。 文心一言: 要在 O(lgn) 时间内找出两个有序数组 X 和 Y 中所有元素的中位数,可以使用二分查找算法。以下是用 Go

算法学习笔记(3): 倍增与ST算法

倍增 目录倍增查找 洛谷P2249重点变式练习快速幂ST表扩展 - 运算扩展 - 区间变式答案倍增更多的用法优化矩形查询优化建图优化 DP作者有话说 倍增,字面意思即”成倍增长“ 他与二分十分类似,都是基于”2“的划分思想 那么具体是怎么样,我们以一个例子来看 查找 洛谷P2249 依据题面,我们知

二叉树中查找后继节点问题

二叉树中查找后继节点问题 作者:Grey 原文地址: 博客园:二叉树中查找后继节点问题 CSDN:二叉树中查找后继节点问题 题目描述 给定一个二叉查找树,以及一个节点,求该节点在中序遍历的后继,如果没有则返回 null 题目链接见:LintCode 448 · Inorder Successor i

二分图(例题)

https://www.cnblogs.com/kuangbiaopilihu/p/18184536 $\quad $ 这里不再介绍二分图的基础知识,只是一些例题的解释。 $\quad $ 当然,这道题可以用二分+并查集来解决。但这是二分图专辑,所以介绍一下二分图做法。 $\quad $ 首先如果两

小白也能懂的Mysql数据库索引详解

核心概念 主键索引/二级索引 聚簇索引/非聚簇索引 回表/索引覆盖 索引下推 联合索引/最左联合匹配 前缀索引 explain 一、[索引定义] 1.索引定义 在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法

[转帖]Linux下的两个环境变量:LIBRARY_PATH和LD_LIBRARY_PATH使用

1.LIBRARY_PATH和LD_LIBRARY_PATH是Linux下的两个环境变量,二者的含义和作用分别如下: LIBRARY_PATH环境变量用于在程序编译期间查找动态链接库时指定查找共享库的路径,例如,指定gcc编译需要用到的动态链接库的目录。设置方法如下(其中,LIBDIR1和LIBDI

数据库连接池之c3p0-0.9.1.2,16年的古董,发生连接泄露怎么查(二)

# 背景 本篇是c3p0连接泄露问题的第二篇,在前面一篇里面,大体介绍了问题,问题就是,我们发现线上服务不响应的原因是拿不到连接。而为啥拿不到连接呢,因为空闲链表为空,那么为什么空闲链表为空呢? 这个我一开始的猜测就是,估计是某处代码从连接池里获取了连接,用完了没有归还,那么,怎么才能找到这些罪恶的