📅  最后修改于: 2023-12-03 15:21:40.790000             🧑  作者: Mango
二分查找,也称折半查找,是一种效率较高的查找算法。但是前提条件是数据必须有序,对于静态数据集合相对适用。
C++实现:
int binarySearch(vector<int>& nums, int target) {
int left = 0, right = nums.size() - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (nums[mid] == target) return mid;
else if (nums[mid] < target) left = mid + 1;
else right = mid - 1;
}
return -1;
}
Python实现:
def binary_search(nums: List[int], target: int) -> int:
left, right = 0, len(nums) - 1
while left <= right:
mid = left + (right - left) // 2
if nums[mid] == target:
return mid
elif nums[mid] < target:
left = mid + 1
else:
right = mid - 1
return -1
每经过一次比较,查找区间就会减半,因此二分查找的时间复杂度为O(log n)。
参考资料:维基百科。