编辑代码

#include <iostream>
#include <vector>
using namespace std;

/* 二分查找 */
int binarySearch(vector<int>& arr, int left, int right, int target) {
    while (left <= right) {
        int mid = left + ((right - left) >> 1);
        if (arr[mid] == target) {  // 查找成功返回元素下标
            return mid;
        }else if (arr[mid] < target) {  // 查找左半部分
            right = mid - 1;
        } else {
            left = mid + 1;  // 查找右半部分
        }
    }
    return -1;  // 如果目标元素不在数组中,返回-1
}

int main() {
    // 有序递减序列
    vector<int> arr = {85, 63, 52, 34, 25, 17, 6};
    int n = arr.size();
    int target = 6;
    int result = binarySearch(arr, 0, n - 1, target);

    if (result == -1) {
        cout << "目标元素未找到" << endl;
    } else {
        cout << "目标元素下标: " << result << endl;
    }
    return 0;
}