编辑代码

#include <stdio.h>

// 二分查找函数,返回值为1表示元素在数组中存在,返回0表示不存在
int binary_search(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 1; // 返回1,表示找到了
        } else if (arr[mid] > k) { // 如果中间元素大于要查找的元素
            right = mid - 1; // 更新右边界,查找左半部分
        } else { // 如果中间元素小于要查找的元素
            left = mid + 1; // 更新左边界,查找右半部分
        }
    }

    return 0; // 没有找到,返回0
}

int main() {
    int arr[] = {6, 17, 25, 34, 52, 63, 85}; // 给定的数组,需要保证是有序的
    int n = sizeof(arr) / sizeof(arr[0]); // 数组长度
    int k = 6; // 要查找的元素

    if (binary_search(arr, n, k)) { // 调用二分查找函数
        printf("元素%d在数组中存在\n", k); // 找到了,输出提示信息
    } else {
        printf("元素%d在数组中不存在\n", k); // 没有找到,输出提示信息
    }

    return 0;
}