iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python二分查找法
  • 953
分享到

python二分查找法

python 2023-01-31 06:01:09 953人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

1、条件不是所有数据类型都可以应用二分查找法,他需要满足以下的条件:是一个有序序列(索引数组),且是已经排好序的序列.2、查找原理在一个有序序列中查找一个指定的数,如果首先和这个序列的中间数相比如果相等就找到返回,如果比这个中间数小,即在

1、条件
不是所有数据类型都可以应用二分查找法,他需要满足以下的条件:
是一个有序序列(索引数组),且是已经排好序的序列.
2、查找原理
在一个有序序列中查找一个指定的数,如果首先和这个序列的中间数相比如果相等就找到返回,如果比这个中间数小,即在序列左边找,如果比中间数大就从右边查找,直到找到或未找到返回.

知道了条件和原理后,其他任何一门语言都可实现,以下是python代码的简单实现.
参考代码

import math

L = [1,56,58,60,66,70,7,98,100,111,49999,99999]
count = 0     #定义统计查找次数
#查找是否在列表中
def bin_search(arg,num):
    global count
    begin = 0
    end = len(arg) -1    #最后一个索引
    mid = math.floor((end - begin)/2)  #获取中间数索引,math.floor用于获取向下取整
    mid_value = arg[mid]                 #中间数
    try:
        if mid_value == num:               #要找的数刚好是中间数
            count +=1
            ret = "%d在列表中,共查找了%d" %(num,count)
        elif mid_value > num:    #说明在左侧
            count += 1
            ret = bin_search(arg[:mid],num)  #从原列表的开始到中间索引为新查找的位置
        else:                      ##说明在右侧
            count += 1
            ret = bin_search(arg[mid+1:],num)        #从原列表的中间到最右(后)的位置
        return ret
    except:
        return "%d 不在列表中!" %num

查找66是否在列表中 并统计查找次数
print(bin_search(L,66))
如图:
python二分查找法

再来查找88时提示没有找到,如图:
print(bin_search(L,88))
python二分查找法

添加以下代码我们看看一个长度为100000的列表中查找L中的各元素各需要多少次

L1 = [ ]
for i in range(100000):   #生成100000长度的列表
    L1.append(i)

for num in L:
    print(bin_search(L1,num))
    count = 0

运行结果如下:
python二分查找法
请注意:在一个长度为100000的序列中找49999这个数,一次就找到了,只因为它是中间数.

通过二分查找法去查找一个数是否在列表中,要查找的数是中间数时,只要一次就能找到,最差的情况就是n/2 =0时,n为序列长度 但最后等于0时要么找到要么没有找到.不管怎么样比冒泡排序效率要高的多.不需要一个一个的元素比对.

--结束END--

本文标题: python二分查找法

本文链接: https://www.lsjlt.com/news/190407.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python二分查找法
    1、条件不是所有数据类型都可以应用二分查找法,他需要满足以下的条件:是一个有序序列(索引数组),且是已经排好序的序列.2、查找原理在一个有序序列中查找一个指定的数,如果首先和这个序列的中间数相比如果相等就找到返回,如果比这个中间数小,即在...
    99+
    2023-01-31
    python
  • 【Python查找算法】二分查找、线性查找、哈希查找
    目录 1 二分查找算法  2 线性查找算法 3 哈希查找算法 1 二分查找算法         二分查找(Binary Search)是一种用于在有序数据集合中查找特定元素的高效算法。它的工作原理基于将数据集合分成两半,然后逐步缩小搜...
    99+
    2023-10-10
    算法 python
  • Python语言实现二分法查找
    前言: 二分法也就是二分查找,它是一种效率较高的查找方法 假如公司新来了一个人,叫张三,他是你们公司第47个人,过了一段时间后,有些人呢看张三不爽,离职了,那这时候张三肯定不是公司第...
    99+
    2022-11-13
  • python二分法查找实例代码
    对于要搜索的元素越多,二分查找速度比简单查找快的更多 这是二分查找算法的优点,但二分算法也有缺点,二分算法只针对有序的列表,这样插入和删除就会很困难,因此,折半查找方法只适合不经常变...
    99+
    2022-11-12
  • python二分法查找函数底值
    假设连续函数f(x)在区间(a,b)上有一个底值m,且在该底值下的函数输出值为M,即f(m)=M,利用二分法查找该底值:(s为足够小的数) 令t=(a+b)/2,若|f(t)-M|&...
    99+
    2022-11-12
  • python二分法查找怎么使用
    这篇文章主要讲解了“python二分法查找怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python二分法查找怎么使用”吧!对于要搜索的元素越多,二分查找速度比简单查找快的更多 这是...
    99+
    2023-06-25
  • C#二分查找算法
    1、定义: 折半搜索,也称二分查找算法、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。 要计算把目标值插入到该数组中的索引值。最开始的思路: ①.先把目标数插入到数组中 ②...
    99+
    2022-11-13
  • Python二分查找算法怎么应用
    本篇内容主要讲解“Python二分查找算法怎么应用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python二分查找算法怎么应用”吧!1. 算法描述二分法是一种效率比较高的搜索方法回忆之前做过的...
    99+
    2023-07-02
  • java实现二分法查找
    什么是二分法查找:二分法也就是折半查找,在有序的数列中查找指定的元素,设定最小索引(low)和最大索引(height-1)还有中间值mid((low+height-1)/2),这种查找,如果中间值比指定元素小让low=mid+1,如果中间值...
    99+
    2015-07-23
    java入门 java 实现 二分法查找
  • python二分查找算法代码怎么写
    下面是一个示例的Python二分查找算法代码: def binary_search(arr, target): left =...
    99+
    2023-10-22
    python
  • Python详细解析之二分查找算法
    本篇文章给大家带来了关于python的相关知识,其中主要整理了二分查找算法的相关问题,包括了算法描述、算法分析、算法思路等等内容,下面一起来看一下,希望对大家有帮助。二分法是一种效率比较高的搜索方法回忆之前做过的猜数字的小游戏,预先给定一个...
    99+
    2022-06-28
    python
  • python二分法怎样查找函数底值
    今天就跟大家聊聊有关python二分法怎样查找函数底值,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。假设连续函数f(x)在区间(a,b)上有一个底值m,且在该底值下的函数输出值为M,...
    99+
    2023-06-22
  • C语言算法--有序查找(折半查找/二分查找)
    目录题目解法一: 挨个遍历方法二:折半查找/二分查找(仅适用于有序查找)总结题目 首先我们来把题目瞅一眼: 在一个有序数组中查找具体的某个数字n。 编写int binary_sea...
    99+
    2022-11-12
  • python二分查找算法的递归实现方法
    本文实例讲述了python二分查找算法的递归实现方法。分享给大家供大家参考,具体如下: 这里先提供一段二分查找的代码: def binarySearch(alist, item): first = ...
    99+
    2022-06-04
    递归 算法 方法
  • 如何使用二分法查找
    本篇内容介绍了“如何使用二分法查找”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 1、二分法查找...
    99+
    2022-10-19
  • python二分查找算法的代码怎么写
    以下是一个简单的二分查找算法的Python代码实现: def binary_search(arr, target): lef...
    99+
    2023-10-26
    python
  • Python真题案例之二分法查找详解
    目录写在前面的话问题描述原理分析1.实现步骤2.图解参考代码写在前面的话 学了Python一些基础知识之后,相信大家对Python使用方法有了一定的感悟,想要追求深层次的东西还要细细...
    99+
    2022-11-13
  • 使用Python实现二分法查找的示例
    关于二分法的定义我就不说了,CSDN很多大牛和前辈都已经阐述的很清楚了,直接上代码。 首先,先创建一个名称为 binary_search 的函数:传递两个参数,元素列表和要查找的值。...
    99+
    2023-05-17
    Python 二分法 Python二分查找
  • Python算法练习之二分查找算法的实现
    目录1. 算法描述2. 算法分析3. 算法思路4. 代码实现纯算法实现递归法实现1. 算法描述 二分法是一种效率比较高的搜索方法 回忆之前做过的猜数字的小游戏,预先给定一个小于100...
    99+
    2022-11-11
  • 如何使用Python语言实现二分法查找
    这篇文章主要为大家展示了“如何使用Python语言实现二分法查找”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用Python语言实现二分法查找”这篇文章吧。前言:二分法也就是二分查找,它是...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作