编辑代码

#include <iostream>
using namespace std;

// 二分查找函数,返回目标元素在有序数组中的下标,如果不存在,返回-1
int binarySearch(int arr[], int n, int k) {
    int left = 0; // 左边界
    int right = n - 1; // 右边界
    while (left <= right) { // 当左边界小于等于右边界时,继续查找
        int mid = (left + right) / 2; // 中间元素的下标
        if (arr[mid] == k) { // 如果中间元素等于目标元素,返回下标
            return mid;
        } else if (arr[mid] < k) { // 如果中间元素小于目标元素,缩小右边界
            right = mid - 1;
        } else { // 如果中间元素大于目标元素,缩小左边界
            left = mid + 1;
        }
    }
    return -1; // 如果循环结束,没有找到目标元素,返回-1
}

// 主函数,测试二分查找函数
int main() {
    int arr[] = {85, 63, 52, 34, 25, 17, 6}; // 有序数组
    int n = sizeof(arr) / sizeof(arr[0]); // 数组的长度
    int k = 6; // 目标元素
    int index = binarySearch(arr, n, k); // 调用二分查找函数,返回下标
    if (index == -1) { // 如果下标为-1,表示不存在
        cout << "元素" << k << "在数组中不存在" << endl;
    } else { // 如果下标不为-1,表示存在
        cout << "元素" << k << "在数组中的下标为" << index << endl;
    }
    return 0;
}