C++实现二分法检索(折半检索)算法
二分法检索,也叫折半检索,是一种常用的查找算法。它适用于已排序的数组中查找某个元素。
算法思想:
在有序数组中查找某个元素时,我们通常会从数组的中间位置开始查找,如果该位置上的元素等于待查找元素,则查找成功;否则,若该位置上的元素大于待查找元素,则在数组左半部分继续查找;若该位置上的元素小于待查找元素,则在数组右半部分继续查找。重复以上过程,直到找到待查找元素或者查找范围缩小为0为止。
C++代码实现:
下面是二分法检索算法的C++代码实现。代码中,函数binarySearch()接收一个有序数组和待查找元素作为参数,返回待查找元素在数组中的下标,若不存在则返回-1。
#include <iostream>
using namespace std;
int binarySearch(int arr[], int start, int end, int target)
{
while (start <= end) {
int mid = start + (end - start) / 2;
if (arr[mid] == target){
return mid;
}else if (arr[mid] > target) {
end = mid - 1;
}else{
start = mid + 1;
}
}
return -1;
}
int main()
{
int arr[] = {2, 3, 5, 8, 13,