Python 中使用二分查找的第一次出现2024年8月29日 | 阅读 7 分钟 在本教程中,我们将学习如何在给定的排序列表中使用二分查找来查找元素第一次出现的索引。我们将在 Python 中实现该算法。但首先,我们需要了解什么是二分查找。 朴素方法在开始二分查找之前,让我们先看看解决该问题最简单的方法。 我们将运行一个 for 循环,找到 x 时,我们将中断循环并返回变量的当前索引。我们可以使用 Python 的 enumerate 函数同时获取变量的索引。 代码 输出 The first occurrence of 3 in the array is at: 7 此方法的 time complexity 为 O(n),其中 n 是数组中的元素数量。这种方法效率不高。当给定的数组未排序时,我们可以考虑使用此方法。 解决此问题的另一种方法是使用 Python 列表的 .index(e) 函数。此函数将返回包含给定元素 e 第一次出现索引的数组索引。 代码 输出 The first occurrence of 3 in the array is at: 7 二分搜索例如,我们有一个包含 n 个整数的排序数组或排序的 Python 列表。我们要在此列表中搜索特定的数字。使用 for 循环遍历列表中的每个元素并检查当前元素是否等于我们要查找的数字,其 time complexity 为 O(n),其中 n 是列表中整数的数量。二分查找是解决此任务的有效方法。 二分查找算法如下:
二分查找算法的 time complexity 为 O(log(n))。 二分查找第一次出现现在假设我们要查找的目标数字在列表中出现不止一次。因此,在这种情况下,我们要查找目标数字在列表中的第一次出现。 解决此问题的算法如下:
现在我们将学习如何在 Python 中实现此算法。 代码 输出 The first occurrence of 3 is at: 3 现在我们将尝试搜索一个不在列表中的数字。 代码 输出 The first occurrence of 3 is at: -1 此算法的 time complexity 为 O(log(n))。因此,我们已经优化了解决方案。我们已经看到了三种查找元素第一次出现索引的方法。 下一主题使用卷积神经网络的花卉识别 |
在本教程中,我们将研究 Python 内置库,用于计算 python 程序的执行季节。Python 中的这样一个库提供了一种称为 timeit() 方法的策略。timeit 模块将多次执行程序(在 Python 中)...
阅读 10 分钟
本教程将讨论如何在 Pandas DataFrame 中循环遍历行。如何使用 Pandas 在 Pandas DataFrame 中循环遍历行?Python 拥有一个出色的以数据为中心的 Python 模块环境,这使其成为执行数据分析的绝佳工具。其中一个工具是 Pandas,...
阅读 3 分钟
时间序列预测简介 一系列在恒定时间间隔内记录度量值称为时间序列。根据频率,时间序列可以分为以下几类:年度(例如,年度预算)季度(例如,支出)月度(例如,空中交通)每周(例如,...
阅读 16 分钟
Python | wxPython 模块 我们都曾想过,是什么让一个应用程序在第一时间就与众不同并具有吸引力?如果我们中有人想到的是应用程序的用户界面,是的,我们是对的。应用程序的用户界面产生了巨大的差异...
7 分钟阅读
Pandas 是一个功能强大的 Python 库,为处理表格数据提供了易于使用的数据操作工具。它构建在 NumPy 包之上,并为数据分析提供了高级接口。数据分析中最常见的任务之一是读取...
7 分钟阅读
JSONB 是 PostgreSQL 中一种强大的数据类型,它提供了一种灵活的方式来存储和查询半结构化数据。在许多应用程序中,JSONB 列用于存储需要频繁更新的复杂数据结构。在本文中,我们将讨论如何更新...
阅读 6 分钟
在 Python 中,有多种方法可以计算列表中项的出现次数。计算元素在列表中出现的次数是处理数据时经常需要的一项基本操作。无论是识别最频繁的...
5 分钟阅读
?本教程解释了如何在不使用方括号的情况下打印 Python 列表。我们假设你了解列表的基础知识。有几种打印列表的方法可以移除方括号,下面将详细介绍。3 种打印列表的 Python 技巧...
阅读 3 分钟
os.walk() 是 Python 的 OS 模块中的一个函数,它通过自顶向下或自底向上遍历目录树来生成目录树中的文件名。它可以用于在目录层次结构中搜索文件,或对目录中的所有文件执行操作。
阅读 4 分钟
字符串是字符序列。一个人只是一个符号。例如,英语有 26 个字符。计算机不处理字符;它们处理数字(二进制)。尽管你可能在屏幕上看到字符,但实际上,它存储为...
阅读 4 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India