python二分法实现实例

yizhihongxing

下面是详细讲解“Python二分法实现实例”的完整攻略,包含两个示例说明。

二分法

二分法是一种常用的查找算法,也称为折半查找。其基本思想是将有序数组分成两部分,然后判断目标值在哪一部分中,在该部分中继续查找,直到找到目标值或者确定目标值不存在为止。二分法的时间复杂度为O(log n),适用于大规模数据的查找。

Python实现二分法

下面是一个示例代码,用于实现二分法:

def binary_search(arr, target):
    left, right = 0, len(arr) - 1

    while left <= right:
        mid = (left + right) // 2

        if arr[mid] == target:
            return mid
        elif arr[mid] < target:
            left = mid + 1
        else:
            right = mid - 1

    return -1

这个代码定义了一个函数binary_search,用于在有序数组arr中查找目标值target。它使用while循环实现二分法,将数组分成左右两部分,并每次迭代中判断目标值在哪一部分中。如果找到目标值,则返回其索引;否则,返回-1。

示例1:在有序数组中查找目标值

让我们使用上面的代码在有序数组中查找目标值。我们将以下代码:

arr = [1, 3, 5, 7, 9]
target = 5

result = binary_search(arr, target)

if result != -1:
    print('Target found at index', result)
else:
    print('Target not found')

这个代码使用binary_search函数在有序数组arr中查找目标值target。我们将arrtarget作为参数传递给binary_search函数,并将结果存储在result变量中。如果找到目标值,则打印其索引;否则,打印“Target not found”。

输出结果为:

Target found at index 2

这表示目标值5在数组中的索引为2。

示例2:在旋转有序数组中查找目标值

让我们使用上面的代码在旋转有序数组中查找目标值。我们将以下代码:

arr = [4, 5, 6, 7, 0, 1, 2]
target = 0

result = binary_search(arr, target)

if result != -1:
    print('Target found at index', result)
else:
    print('Target not found')

这个代码使用binary_search函数在旋转有序数组arr中查找目标值target。我们将arrtarget作为参数传递给binary_search函数,并将结果存储在result变量中。如果找到目标值,则打印其索引;否则,打印“Target not found”。

输出结果为:

Target found at index 4

这表示目标值0在旋转有序数组arr中的索引为4。

希望这些示例说明帮助你理解如何使用Python实现二分法。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python二分法实现实例 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • 0-学习路线

    超详细的算法学习路线 https://cuijiahua.com/blog/2020/10/life-73.html   主要分为 4 个部分:数学基础、编程能力、算法基础、实战。 1、数学基础 在机器学习算法中,涉及到最为重要的数学基本知识有两个:线性代数和概率论。 这两也是大学的必修课了,如果知识早已还给老师,也没关系,哪里不会学补哪里。 线性代数研究的…

    算法与数据结构 2023年4月17日
    00
  • Python常用算法学习基础教程

    Python常用算法学习基础教程 本攻略将介绍Python常用算法的基础知识,包括排序算法、查找算法、递归算法等。我们将使用示例代码来演示这些算法的实现过程。 排序算法 冒泡排序 冒泡排序是一种简单的算法,它的基本思想是通过相邻元素之间的比较和交换来把小的元素逐步“冒泡”到数组的顶端。以下是示例代码,演示如何实现冒泡排序: def bubble_sort(a…

    python 2023年5月13日
    00
  • 浅谈python抛出异常、自定义异常, 传递异常

    浅谈Python抛出异常、自定义异常和传递异常 异常处理是编程中必不可少的部分,能够提高程序的健壮性和可读性。Python中的异常处理机制提供了非常方便和灵活的方法。 Python中抛出异常 抛出异常可以在代码运行过程中发现错误,主动终止程序的运行。 Python中内置了许多异常类型,比如 IndexError、KeyError 等等,还有 Exceptio…

    python 2023年5月13日
    00
  • Python 常用的安装Module方式汇总

    下面我来详细讲解一下“Python常用的安装Module方式汇总”,包括以下方面: Python模块的安装方式汇总 pip命令的使用 conda命令的使用 1. Python模块的安装方式汇总 目前,Python模块的安装方式比较多,主要有以下几种: 使用pip安装 使用conda安装 直接下载源码安装 通过Python的包管理器安装 其中,前两种是比较常用…

    python 2023年5月14日
    00
  • 排序算法之详解选择排序

    引入 选择排序顾名思义是需要进行选择的,那么就要问题了,选择到底是选择什么呢? 选择排序的选择是选择数组中未排序的数组中最小的值,将被选择的元素放在未排序数组的首位 如果你对 ‘未排序数组’ , ‘选择’ 的概念不理解,那么你可以看看下面的图 思路 有了上面的一些基础之后,我们再来说说选择排序算法的思路 不断的选择未排序数组中最小的值,将其与未排序数组的首位…

    算法与数据结构 2023年4月25日
    00
  • Django生成PDF文档显示在网页上以及解决PDF中文显示乱码的问题

    下面详细讲解Django生成PDF文档并显示在网页上以及解决PDF中文乱码问题的攻略。 生成PDF文档并显示在网页上 安装依赖包 首先安装必要的依赖包,包括reportlab、Pillow和django-wkhtmltopdf。这三个包可以使用pip安装,命令如下: pip install reportlab Pillow django-wkhtmltopd…

    python 2023年5月20日
    00
  • python发送HTTP请求的方法小结

    下面我详细讲解一下“python发送HTTP请求的方法小结”的完整攻略。 1. 简介 Python是一种非常流行的编程语言,其可以使用一个HTTP库来发送HTTP请求并接收HTTP响应。常见的HTTP库有Python内置的urllib模块和第三方库requests。这两个库的用法有所不同,但都能满足普通的发送HTTP请求的需求。 2. 使用urllib发送H…

    python 2023年6月3日
    00
  • Python爬虫JSON及JSONPath运行原理详解

    在Python爬虫中,JSON是一种常用的数据格式,用于在不同的应用程序之间传递数据。JSONPath是一种用于在JSON数据中查找和提取数据的语言。以下是Python爬虫JSON及JSONPath运行原理的详细攻略: JSON的运行原理 JSON是一种轻量级的数据交换格式,它使用文本格式来表示数据。JSON数据由键值对组成,键和值之间用冒号分隔,键值对之间…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部