如何在 Python 中使用 enumerate 函数实现二分查找

2023-03-31 00:00:00 函数 查找 如何在

在 Python 中,可以使用 enumerate 函数对一个可迭代对象进行枚举。二分查找(Binary Search)是一种基于比较目标值和数组中间值的算法,可以快速定位有序数组中的元素。以下是一个使用 enumerate 函数实现二分查找的示例代码:

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

    while left <= right:
        mid = (left + right) // 2
        _, value = next((i, x) for i, x in enumerate(array) if i == mid)
        if value == target:
            return mid
        elif value < target:
            left = mid + 1
        else:
            right = mid - 1

    return -1

在这个例子中,我们使用 enumerate 函数来枚举数组中的元素。在每次循环中,我们首先计算中间位置的索引 mid,然后使用 next 函数和生成器表达式从数组中获取该位置的值。如果该值等于目标值 target,则返回该位置的索引。否则,如果该值小于目标值,则在右半部分继续查找;如果该值大于目标值,则在左半部分继续查找。

接下来,我们可以使用这个函数来查找一个包含字符串的数组中特定字符串的位置:

array = ["pidancode.com", "Python", "Java", "C++", "皮蛋编程"]
target = "皮蛋编程"
result = binary_search(array, target)

if result != -1:
    print(f"{target} 的位置为 {result}")
else:
    print(f"{target} 不在数组中")

输出结果为:

皮蛋编程 的位置为 4
这表明目标字符串在数组中的索引为 4。

相关文章