二分查找算法讲解及其C++代码实现
二分查找算法是一种常用的查找算法,也被称为折半查找。它可以在有序的数组或列表中快速查找需要的元素。
算法描述:
- 首先确定数组的中间位置mid=(left+right)/2;
- 然后将要查找的值key与中间位置的值进行比较;
- 如果key等于中间位置的值,则查找成功,返回mid;
- 如果key小于中间位置的值,则在左半部分继续查找;
- 如果key大于中间位置的值,则在右半部分继续查找;
- 重复以上步骤,直到查找到key或者left>right时,查找结束。
C++代码实现:
int binarySearch(int arr[], int n, int key)
{
int left = 0;
int right = n - 1;
while (left <= right)
{
int mid = (left + right) / 2;
if (arr[mid] == key)
return mid;
else if (arr[mid] > key)
right = mid - 1;
else if (arr[mid] < key)
left = mid + 1;
}
return -1; // 查找失败,返回-1
}
该函数接收三个参数,分别是:
- arr:有序数组指针;
- n:数组长度;
- key:要查找的值。
如果查找成功,函数将返回该元素在数组中的下标;否则,返回-1表示查找失败。
注意:使用二分查找算法前,必须先对数组进行排序。