软考
APP下载

二分查找的简单例题python

二分查找是计算机科学中一种常见的算法,也叫折半查找。使用二分查找算法对于已排好序的数组进行查找时,可以大大提高查找效率。本文将从多个角度分析二分查找的简单例题,并使用Python语言进行实现。

一、题目描述

给定一个已排序的整数数组nums和一个目标值target,查找数组中是否存在此目标值。如果存在,则返回其下标;否则返回-1。

例如,输入nums=[-1, 0, 3, 5, 9, 12],target=9,输出4,因为9在数组nums中的下标为4。

二、算法思路

二分查找基于的条件是数组已经排好序。由于数据的长度是有限的,二分查找算法在寻找指定的数据时可以减少查找的范围,提高查找的效率。二分查找的基本思路如下:

1. 取数组中间位置的值mid,分别比较mid对应的数与目标数target的大小:

如果mid对应的数大于目标数target,那么目标数一定只可能出现在数组nums的左半部分,将右下标r赋值为mid-1,继续查找左半部分。

如果mid对应的数小于目标数target,那么目标数一定只可能出现在数组nums的右半部分,将左下标l赋值为mid+1,继续查找右半部分。

如果mid对应的数等于目标数target,说明已经搜索到该目标数,返回下标mid。

2. 重复1的步骤直到找到目标数或者搜索范围为空。

三、Python代码实现

根据以上的算法思路,我们可以使用Python代码实现二分查找算法。

```Python

def binary_search(nums, target):

l, r = 0, len(nums) - 1

while l <= r:

mid = l + (r - l) // 2

if nums[mid] == target:

return mid

elif nums[mid] < target:

l = mid + 1

else:

r = mid - 1

return -1

```

四、算法复杂度分析

二分查找算法的时间复杂度为O(log n)。

在每一轮查找中,二分查找算法会将查找范围缩小为原来的一半,因此最坏情况下需要的查找次数为log2n。

五、应用场景

二分查找算法在计算机科学和工程中有很多应用场景,其中包括以下几个方面:

1. 有序数组的查找:已经排好序的数组可以使用二分查找算法进行快速查找。

2. 最大化问题:对于单峰函数,二分查找算法可以快速找到函数的最大值。

3. 依赖关系的解决:对于具有局部依赖关系的问题,二分查找算法可以快速解决。

4. 词频统计:当需要统计大量文章中的某个单词出现的次数时,二分查找算法可以提高计算机处理的效率。

备考资料 免费领取:软件设计师报考指南+考情分析+思维导图等 立即下载
真题演练 精准解析历年真题,助你高效备考! 立即做题
相关阅读
软件设计师题库