返回

二分查找算法:快速找到目标元素

前端

二分查找算法简介

二分查找算法是一种高效的搜索算法,用于在有序数组中快速找到目标元素。它的核心思想是利用数组的有序性,通过不断将数组一分为二来缩小搜索范围,从而快速找到目标元素。

二分查找算法的伪代码如下:

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

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

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

    return -1

LeetCode 704. 二分查找

现在,让我们通过一个实际的 LeetCode 题目来演示二分查找算法的应用。

题目

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。

你可以假设 nums 中的所有元素都是不同的。

示例 1:

输入:nums = [-1,0,3,5,9,12], target = 9
输出:4
解释:9 出现在 nums 中,下标为 4

示例 2:

输入:nums = [-1,0,3,5,9,12], target = 2
输出:-1
解释:2 不存在 nums 中,因此返回 -1

我们可以使用二分查找算法来解决这个问题。首先,我们将数组 nums 的第一个元素和最后一个元素作为初始的搜索范围。然后,我们将搜索范围一分为二,并将中间元素与目标值进行比较。

如果中间元素等于目标值,则我们已经找到目标元素,并返回其下标。

如果中间元素小于目标值,则我们知道目标元素一定在中间元素的右边,因此我们将搜索范围更新为从中间元素的下一个元素到最后一个元素。

如果中间元素大于目标值,则我们知道目标元素一定在中间元素的左边,因此我们将搜索范围更新为从第一个元素到中间元素的前一个元素。

我们重复以上步骤,直到找到目标元素或搜索范围为空。如果搜索范围为空,则说明目标元素不存在于数组 nums 中,我们返回 -1。

总结

二分查找算法是一种高效的搜索算法,用于在有序数组中快速找到目标元素。它的核心思想是利用数组的有序性,通过不断将数组一分为二来缩小搜索范围,从而快速找到目标元素。

在本文中,我们通过一个实际的 LeetCode 题目来演示二分查找算法的应用。我们使用二分查找算法来搜索一个有序数组中的目标元素,并成功地找到了目标元素的下标。