二分查找是一种高效的查询方法,时间复杂度为O(nlogn),本文给出二分查找的代码实现。
示例:
代码:
python">class Solution:def search(self, nums, target):l, r = 0, len(nums) - 1while l <= r:mid = (l + r) // 2if nums[mid] > target:r = mid - 1elif nums[mid] < target:l = mid + 1else:return midreturn -1
解释:
1)当nums[mid] > target时表明target在[0, mid]区间内,故将右指针r移至mid-1,同理当nums[mid] < target时表明target在[mid, len(nums) - 1]区间内,将左指针移至mid+1,直到不满足循环l<=r时退出或找到target的位置返回下标指针。
2)注意while循环的条件l<=r,若为l<r,则当数组只有一个元素时将无法返回正确下标位置。