Python程序在数组中搜索元素
在Python中,主要使用的搜索算法主要有两种。其中,第一个是线性搜索,第二个是二分搜索。
这两种技术主要用于从给定数组或给定列表中搜索元素。在搜索元素时,任何类型的算法都可以遵循两种方法。其中一种是递归方法,另一种是迭代方法。让我们讨论两种方法中的两种算法并解决类似的问题。
线性搜索
线性搜索技术也称为顺序搜索。 “顺序搜索”这个名称的含义绝对是由该搜索算法遵循的过程来证明的。它是一种方法或技术,用于在 Python 中查找数组或列表中的元素。
它被认为是所有搜索算法中最简单和最容易的。但是,这个算法的唯一缺点是效率不高。这就是为什么不经常使用线性搜索的主要原因。其他
算法
步骤 1 - 它仅通过将所需元素与给定数组中存在的每个元素进行比较来按顺序搜索元素。
步骤 2 - 如果找到所需的元素,则将元素的索引或位置显示给用户。
步骤 3 - 如果该元素不存在于数组中,则用户将被告知未找到该元素。这样,算法就处理好了
总的来说,线性搜索算法对于小于或等于100的小型数组或小型列表来说,比较适合和高效,因为它会检查并比较每个元素。
如果所需元素位于备份的最后位置,将会消耗更多时间。
线性算法搜索在情况下最佳的时间复杂度为“ O( 1 ) ”。在这种情况下,元素将位于集群的第一个位置,即索引为“ 0 ”。
线性搜索算法在平均情况下的时间复杂度是“ O( n ) ”。在这种情况下,该元素将出现在数组的中间位置,即索引为“ ( n – 1 ) / 2 ” 或“ (( n – 1 ) / 2 )+ 1 ”。
线性搜索算法在最坏情况下的时间复杂度是“ O( n ) ”。在这种情况下,该元素将出现在数组的最后一个位置,即索引为“ n-1 ”。
示例
在下面的示例中,我们将学习使用线性搜索在阵列中查找元素的过程。
雷雷输出
上述程序的输出如下:
雷雷示例(递归)
在下面的例子中,我们将学习使用梯度方法在阵列中进行线性搜索的过程。
雷雷输出
上述程序的输出如下:
雷雷二分查找
二分查找算法与线性查找算法相当不同。它完全遵循不同的过程来搜索集群中的元素。它通常只考虑集群集群。
如果阵列在某些情况下没有排序,则对阵列进行排序,然后开始二分搜索算法的过程。一旦阵列被二分搜索算法,则考虑首先被排序,然后算法被分配磁盘。
算法
步骤 1 − 对仓库进行排序是第一步。
Step 2 - 数组排序后,数组被视为两半。一半是从排序数组的第一个元素到中间元素,后半部分是从排序数组的中间元素之后的元素到最后一个元素。
步骤 3 - 将关键元素(应该搜索的元素称为关键元素)与排序数组的中间元素进行比较。
步骤 4 - 如果键元素小于或等于排序数组的中间元素,则后半部分元素将被进一步忽略,因为键元素小于中间元素。所以,当然,该元素必须存在于第一个元素和中间元素之间。
步骤 6 - 如果键元素大于中间元素,则忽略排序数组的前半部分,并考虑从中间元素到最后一个元素的元素。
步骤 7 - 在这些元素中,关键元素再次与减半数组的中间元素进行比较,并重复相同的过程。如果关键元素大于减半数组的中间元素,则前一半被忽略。
第8步 - 如果关键元素小于或等于被分割数组的中间元素,则被分割数组的后半部分将被忽略。通过这种方式,元素将在数组的任意一半中进行搜索。
因此,与线性搜索相比,复杂度减少了一半或更多,因为有一半的元素将在第一步中被移除或不被考虑。二分搜索的最佳情况时间复杂度为“O(1)”。二分搜索的最坏情况时间复杂度为“O(logn)”。这就是二分搜索算法的工作原理。让我们考虑一个例子,并应用二分搜索算法来找出数组中的关键元素。
Example
In this example, we are going to learn about the process of searching an element in an array using Binary search in recursive approach.
def recursive_binary(arr, first, last, key_element): if first <= last: mid = (first + last) // 2 if arr[mid] == key_element: return mid elif arr[mid] > key_element: return recursive_binary(arr, first, mid - 1, key_element) elif arr[mid] < key_element: return recursive_binary(arr, mid + 1, last, key_element) else: return -1 arr = [20, 40, 60, 80, 100] key = 80 max_size = len(arr) result = recursive_binary(arr, 0, max_size - 1, key) if result != -1: print("The element", key, "is present at index", (result), "in the position", (result + 1)) else: print("The element is not present in the array")
Output
上述程序的输出如下:
The element 80 is found at the index 3 and in the position 4
Example
In this example, we are going to learn about the process of searching an element in an array using Binary search in iterative approach.
def iterative_binary(arr, last, key_element): first = 0 mid = 0 while first <= last: mid = (first + last) // 2 if arr[mid] < key_element: first = mid + 1 elif arr[mid] > key_element: last = mid - 1 else: return mid return -1 arr = [20, 40, 60, 80, 100] key = 80 max_size = len(arr) result = iterative_binary(arr, max_size - 1, key) if result != -1: print("The element", key, "is present at index", (result), "in the position", (result + 1)) else: print("The element is not present in the array")
Output
上述程序的输出如下:
The element 80 is found at the index 3 and in the position 4
这是二分搜索算法的工作原理。根据时间复杂度的概念,我们可以肯定二分搜索算法比线性搜索算法更高效,时间复杂度在其中起着重要的作用。通过使用这种类型的算法,可以搜索数组中的元素。尽管用于解决问题的过程不同,但结果不会波动。这是使用多种算法检查输出一致性的一个优点。
以上是Python程序在数组中搜索元素的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

使用 Notepad++ 运行 Python 程序需要以下步骤:1. 安装 Python 插件;2. 创建 Python 文件;3. 设置运行选项;4. 运行程序。

PyCharm是一款非常流行的Python集成开发环境(IDE),它提供了丰富的功能和工具,使得Python开发变得更加高效和便捷。本文将为大家介绍PyCharm的基本操作方法,并提供具体的代码示例,帮助读者快速入门并熟练操作该工具。1.下载和安装PyCharm首先,我们需要前往PyCharm官网(https://www.jetbrains.com/pyc

PyCharm是一款功能强大的Python集成开发环境,提供了丰富的功能和工具来帮助开发者提高效率。其中,PyInstaller是一个常用的工具,可以将Python代码打包为可执行文件(EXE格式),方便在没有Python环境的机器上运行。在本篇文章中,我们将介绍如何在PyCharm中使用PyInstaller将Python代码打包为EXE格式,并提供具体的

PyCharm社区版支持的插件足够吗?需要具体代码示例随着Python语言在软件开发领域的应用越来越广泛,PyCharm作为一款专业的Python集成开发环境(IDE),备受开发者青睐。PyCharm分为专业版和社区版两个版本,其中社区版是免费提供的,但其插件支持相对专业版有所限制。那么问题来了,PyCharm社区版支持的插件足够吗?本文将通过具体的代码示例

Llama3来了!就在刚刚,Meta官网上新,官宣了Llama380亿和700亿参数版本。并且推出即为开源SOTA:Meta官方数据显示,Llama38B和70B版本在各自参数规模上超越一众对手。8B模型在MMLU、GPQA、HumanEval等多项基准上均胜过Gemma7B和Mistral7BInstruct。而70B模型则超越了闭源的当红炸子鸡Claude3Sonnet,和谷歌的GeminiPro1.5打得有来有回。Huggingface链接一出,开源社区再次沸腾。眼尖的盲生们还第一时间发现

Python 程序开发流程包括以下步骤:需求分析:明确业务需求和项目目标。设计:确定架构和数据结构,绘制流程图或使用设计模式。编写代码:使用 Python 编程,遵循编码规范和文档注释。测试:编写单元和集成测试,进行手动测试。审查和重构:审查代码,发现缺陷和改进可读性。部署:将代码部署到目标环境中。维护:修复错误、改进功能,并监控更新。

什么是GIL?GIL是全局解释器锁的缩写,它是python解释器的一个重要概念。GIL确保了Python解释器一次只能执行一个线程。这意味着在任何时候,只有一个线程可以运行Python字节码。其他线程必须等待GIL可用才能继续执行。GIL是如何工作的?GIL是一个由C语言编写的锁,它位于Python解释器中。当一个线程想要执行Python字节码时,它必须首先获取GIL。如果GIL已经被另一个线程持有,那么该线程必须等待GIL可用才能继续执行。GIL对Python程序有什么影响?GIL对Pytho

Flask安装配置教程:轻松搭建PythonWeb应用的利器,需要具体代码示例引言:随着Python的日益流行,Web开发也成为了Python程序员的必备技能之一。而要进行Python的Web开发,我们需要选择合适的Web框架。在众多的PythonWeb框架中,Flask是一款简洁、易上手且灵活的框架,备受开发者们的青睐。本文将介绍Flask框架的安装、
