首页 > 编程语言 >用Python实现二进制搜索(二分查找)

用Python实现二进制搜索(二分查找)

时间:2024-07-29 22:00:32浏览次数:14  
标签:二分 index guess target Python list bound 二进制 sorted

二进制搜索(binary search,又称二分搜索)是一种快速有效的搜索方法,用于搜索有序列表中的元素。

import math


def binary_search(sorted_list, target):
    """
    在有序列表sorted_list中查找目标值target的位置
    使用二分查找算法
    """
    lower_bound = 0  # 初始化下边界
    upper_bound = len(sorted_list)  # 初始化上边界
    guess_index = math.floor(len(sorted_list) / 2)  # 初始化猜测位置

    # 当猜测值与目标值之间的差值大于0.0001时继续查找
    while abs(sorted_list[guess_index] - target) > 0.0001:
        if sorted_list[guess_index] > target:
            upper_bound = guess_index  # 调整上边界
        elif sorted_list[guess_index] < target:
            lower_bound = guess_index  # 调整下边界
        # 更新猜测位置
        guess_index = math.floor((lower_bound + upper_bound) / 2)

    return guess_index


if __name__ == '__main__':
    sortedlist = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    index = binary_search(sortedlist, 10)
    print(f"数字10位于sorted_list的位置{index}")

数字10位于sorted_list的位置9 

 

标签:二分,index,guess,target,Python,list,bound,二进制,sorted
From: https://blog.csdn.net/weixin_74254879/article/details/140732516

相关文章

  • 超详细Python教程——使用Hexo搭建自己的博客
    使用Hexo搭建自己的博客对于一个程序员来说,搭建一个属于自己的博客平台是非常有意义的事情。首先,博客可以记录自己的成长历程,也是对自己一段时间学习和工作的总结和沉淀;其他,通过博客可以营销自己,增强自己在互联网或行业内的影响力,为将来更好的职业生涯打一个坚实的基础。前......
  • 超详细Python教程——玩转PyCharm
    玩转PyCharmPyCharm是由JetBrains公司开发的提供给Python专业的开发者的一个集成开发环境,它最大的优点是能够大大提升Python开发者的工作效率,为开发者集成了很多用起来非常顺手的功能,包括代码调试、高亮语法、代码跳转、智能提示、自动补全、单元测试、版本控制等等。此外,P......
  • 2024年华为OD机试真题-找出作弊的人-(C++/Java/python)-OD统一考试(C卷D卷)
    2024华为OD机试真题目录-(B卷C卷D卷)-【C++JavaPython】  题目描述公司组织了一次考试,现在考试结果出来了,想看一下有没人存在作弊行为,但是员工太多了,需要先对员工进行一次过滤,再进一步确定是否存在作弊行为。过滤的规则为:找到分差最小的员工ID对(p1,p2)列表,......
  • Shopee虾皮api python获取虾皮购物平台的商品数据信息 数据采集
    虾皮购物(英语:Shopee)是一个电商平台,总公司设在新加坡,归属于SeaGroup(之前称之为Garena),该企业于2009年由李小冬(ForrestLi)创办。虾皮购物于2015年初次在新加坡推出,现阶段已拓展到马来西亚、泰国、印度尼西亚、越南和菲律宾。虾皮购物为全球华人地区的客户提供线上购物和销售......
  • 2024华为OD机试真题- 亲子游戏Python-C卷D卷-200分
    2024华为OD机试题库-(C卷+D卷)-(JAVA、Python、C++)题目描述宝宝和妈妈参加亲子游戏,在一个二维矩阵(N*N)的格子地图上,宝宝和妈妈抽签决定各自的位置,地图上每个格子有不同的糖果数量,部分格子有障碍物。游戏规则是妈妈必须在最短的时间(每个单位时间只能走一步)到达宝宝的位置,路上......
  • 11. 2 用Python开发一个简单的Web服务器
    用Python开发一个简单的Web服务器11.2用Python开发一个简单的Web服务器11.2.1需求分析11.2.2系统设计11.2.3详细设计11.2.4实现11.2.5测试11.2.6部署和维护11.2.7文档和帮助文档11.2.8用户反馈11.2用Python开发一个简单的Web服务......
  • 11.1 用Python开发一个计算器程序
    用Python开发一个计算器程序11.1用Python开发一个计算器程序11.1.1设计思路11.1.2编写代码11.1.3运行与测试11.1用Python开发一个计算器程序在编程的世界里,创建简单的工具如计算器是初学者学习编程语言的一个好方法。Python,由于其简洁的语法......
  • Python - Values returned by and and or operators
    Unlikesomeotherlanguages,inPython,thelogicaloperatorsandandordonotreturnBooleanvaluesTrueorFalse;theyactuallyreturnthelastevaluatedoperand.Wegenerallyusetheseoperatorsinifandwhileconditions,sowedonotgettoknowwha......
  • ICEEMDAN算法 python代码实现
    1.安装matlab.enginepython库里没有ICEEMDAN的方法,需要通过python调用matlab的库中的ICEEMDAN。首先下载python和matlab(这里就不过多阐述了),python和matlab的版本要对应,下面是python和matlab对应的版本(仅供参考)(要记住matlab安装的位置,下面要用)从anacondapropmt进入自己创建......
  • 基于Python进行小波分析
    在气象学和环境科学的研究中,理解和预测气象数据的周期性变化至关重要。小波分析作为一种高效的数学工具,近年来在气象数据的周期性分析中得到了广泛应用。本文将详细介绍如何通过Python进行小波分析,以探究气象数据中的周期性变化。1数据来源及下载方式西北农林科技大学的彭守璋......