以下是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

c++编写二分查找

原文地址: https://www.cveoy.top/t/topic/d841 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录