本文为自用模板,不提供思路讲解
二分查找,用于查找有序组中特殊值的位置,时间复杂度为
O(logn)
。
二分查找的 C++ 实现:
int binSearch(int *arr, int n, int target)
{
int left = 0, right = n - 1;
while (left <= right)
{
int mid = left + (right - left) / 2;
if (arr(mid) == target)
{
return mid;
}
else if (arr(mid) > target)
{
right = mid - 1;
}
else
{
left = mid + 1;
}
}
return -1;
}
二分查找的 Python 实现:
def bin_search(data_list, target):
left = 0
right = len(data_list) - 1
while left <= right:
mid = left + (right - left) // 2
if data_list[mid] == target:
return mid
elif data_list[mid] > target:
right = mid - 1
else:
left = mid + 1
return -1