编辑代码

#include <stdio.h>

// 折半查找算法
int binary_search(int arr[], int n, int target) {
    // 定义最低和最高的查找范围
    int low = 0;
    int high = n - 1;

    // 当最低和最高的查找范围重叠时结束循环
    while (low <= high) {
        // 计算中间元素的下标
        int mid = (low + high) / 2;
        // 如果中间元素就是要查找的元素,则返回 1 (表示存在)
        if (arr[mid] == target) {
            return 1;
        } else if (arr[mid] < target) { // 如果中间元素比要查找的元素小,则将查找范围缩小到右半部分
            low = mid + 1;
        } else { // 如果中间元素比要查找的元素大,则将查找范围缩小到左半部分
            high = mid - 1;
        }
    }

    // 如果整个数组都搜索完了都没有找到要查找的元素,则返回 0 (表示不存在)
    return 0;
}

int main() {
    // 定义数组、数组长度和要查找的元素
    int arr[] = {6, 17, 25, 34, 52, 63, 85};
    int len = sizeof(arr) / sizeof(arr[0]);
    int key = 6;

    // 调用折半查找算法,如果返回 1 则表示存在,否则表示不存在
    if (binary_search(arr, len, key)) {
        printf("%d存在于数组中\n",key);
    } else {
        printf("%d不存在于数组中\n",key);
    }

    return 0;
}