Python中的二分搜索2025 年 4 月 17 日 | 6 分钟阅读 本教程将学习如何使用 Python 中的二分查找算法在给定列表中查找元素的索引位置。 引言二分查找是一种在列表中查找特定元素的算法。假设我们有一个包含一千个元素的列表,并且我们需要获取特定元素的索引位置。使用二分查找算法,我们可以非常快速地找到元素的索引位置。 有很多查找算法,但二分查找是最受欢迎的。 要应用二分查找算法,列表中的元素必须已排序。如果元素未排序,请先对其进行排序。 让我们来理解二分查找的概念。 二分查找的概念在二分查找算法中,我们可以使用以下方法找到元素的位置。
递归方法遵循分治法的技术。在此方法中,一个函数会一遍又一遍地调用自身,直到在列表中找到一个元素。 在迭代方法中,一组语句会重复多次以查找元素在列表中的索引位置。while 循环用于完成此任务。 二分查找比线性查找更有效,因为我们不需要检查列表中的每个索引。列表必须已排序才能实现二分查找算法。 让我们逐步实现二分查找。 我们有一个已排序的元素列表,并且正在查找 45 的索引位置。 [12, 24, 32, 39, 45, 50, 54] 因此,我们在列表中设置了两个指针。一个指针用于表示较小的值,称为 low,第二个指针用于表示较大的值,称为 high。 接下来,我们计算数组中中间元素的值。 现在,我们将要搜索的元素与中间索引值进行比较。在这种情况下,32 不等于 45。因此,我们需要进行进一步比较才能找到元素。 如果我们要搜索的数字等于中间值。则返回 mid,否则继续进行进一步比较。 要搜索的数字大于中间数字,我们将 n 与 mid 右侧的元素进行比较,并将 low 设置为 low = mid + 1。 否则,将 n 与 mid 左侧的中间元素进行比较,并将 high 设置为 high = mid - 1。 ![]() 重复此过程,直到找到要搜索的数字。 在 Python 中实现二分查找首先,我们使用迭代方法实现二分查找。我们将重复一组语句并迭代列表中的每个项。我们将找到中间值,直到搜索完成。 让我们通过迭代方法理解上面的程序。 Python 实现输出 Element is present at index 4 说明 在上面的程序中 -
让我们来理解二分查找的递归方法。 递归二分查找二分查找可以使用递归方法。在这种方法中,我们将定义一个递归函数,该函数会一直调用自身,直到满足条件。 让我们通过递归函数来理解上面的程序。 Python 程序输出 Element is present at index 2 说明 上面的程序与之前的程序类似。我们声明了一个递归函数及其基本条件。条件是最低值小于或等于最高值。
在最后一部分,我们编写了主程序。它与之前的程序相同,但唯一的区别是我们向 binary_search() 函数传递了两个参数。 这是因为我们无法在递归函数中为 low、high 和 mid 分配初始值。每次调用递归函数时,这些变量的值都会重置。这将导致错误的结果。 复杂度二分查找算法在最佳情况下的复杂度为 O(1)。这发生在我们要查找的元素在第一次比较中就找到时。O(logn) 是二分查找的平均情况和最坏情况复杂度。这取决于找到我们要查找的元素所需的搜索次数。 结论二分查找算法是查找列表中元素的最高效、最快速的方法。它会跳过不必要的比较。顾名思义,搜索被分为两部分。它专注于列表中靠近我们要搜索的数字的那一部分。 我们已经讨论了两种查找给定数字索引位置的方法。 下一主题Python 排序算法 |
我们请求您订阅我们的新闻通讯以获取最新更新。