📅  最后修改于: 2023-12-03 15:10:20.163000             🧑  作者: Mango
在编程中,数组是一种非常基础且常用的数据结构,它可以存储多个相同数据类型的元素,并通过index对元素进行访问和操作。
针对数组这种数据结构,有很多常见且有趣的问题。其中问题2是:如何在一个已排序的数组中找到特定元素的位置?
因为数组已经是有序的了,所以可以采用二分法查找的思路,将数组不断地分为两个部分,然后判断特定元素是在左半边还是右半边,最后逐步缩小范围,直到找到目标元素的位置。
具体如下:
设置左右指针,left指向数组的第一个元素,right指向数组的最后一个元素。
当left<=right时,执行以下过程:
若数组中没有目标元素,则返回-1.
实现代码如下:
def binary_search(arr, target):
left, right = 0, len(arr)-1
while left <= right:
mid = (left + right) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
left = mid+1
else:
right = mid-1
return -1
接下来对代码进行测试,使用assert语句断言代码的正确性:
arr = [1,2,3,4,5,6,7,8,9]
assert binary_search(arr, 3) == 2
assert binary_search(arr, 8) == 7
assert binary_search(arr, 0) == -1
assert binary_search(arr, 10) == -1
测试结果符合预期,说明代码是可靠的。
二分查找是一种高效的查找算法,对于有序数组这种情况尤为适用。在实现时需要注意边界条件和数组中没有目标元素的情况,避免出现错误。