编辑代码

#include <stdio.h>

// 二分查找算法,适用于降序数组
int binarySearchDescending(int arr[], int left, int right, int k) {
    while (left <= right) {
        int mid = left + (right - left) / 2;
        if (arr[mid] == k) {
            return mid;  // 找到目标值,返回索引
        } else if (arr[mid] < k) {
            right = mid - 1;  // 目标值在左半部分
        } else {
            left = mid + 1;  // 目标值在右半部分
        }
    }
    return -1;  // 未找到目标值
}

// 主函数
int main() {
    int arr[] = {85, 63, 52, 34, 25, 17, 6}; // 降序数组
    int k = 6; // 要查找的元素
    int n = sizeof(arr) / sizeof(arr[0]);

    int result = binarySearchDescending(arr, 0, n - 1, k);
    if (result != -1) {
        printf("元素 %d 存在于数组中,索引为 %d。\n", k, result);
    } else {
        printf("元素 %d 不在数组中。\n", k);
    }

    return 0;
}