c++编写二分查找
以下是C++编写的二分查找算法:
#include <iostream>
using namespace std;
int binarySearch(int arr[], int l, int r, int x) {
if (r >= l) {
int mid = l + (r - l) / 2;
if (arr[mid] == x)
return mid;
if (arr[mid] > x)
return binarySearch(arr, l, mid - 1, x);
return binarySearch(arr, mid + 1, r, x);
}
return -1;
}
int main() {
int arr[] = { 2, 3, 4, 10, 40 };
int n = sizeof(arr) / sizeof(arr[0]);
int x = 10;
int result = binarySearch(arr, 0, n - 1, x);
(result == -1) ? cout << "Element is not present in array"
: cout << "Element is present at index " << result;
return 0;
}
在这个程序中,binarySearch()函数采用递归方法实现二分查找。该函数接受4个参数,分别是数组arr、查找区间的左边界l、右边界r和要查找的元素x。
在函数内部,通过计算中间元素的索引mid,将查找区间分为两部分。如果mid位置的元素等于x,则返回mid。如果mid位置的元素大于x,则在左半部分继续查找。如果mid位置的元素小于x,则在右半部分继续查找。如果查找区间为空,则返回-1,表示没有找到x
原文地址: https://www.cveoy.top/t/topic/d841 著作权归作者所有。请勿转载和采集!