编辑代码

#include <stdio.h>
#include <stdlib.h>

// 比较函数,用于排序
int compare(const void *a, const void *b) {
    return (*(int *)a - *(int *)b);
}

// 二分查找算法
int binarySearch(int arr[], int size, int target) {
    int left = 0;
    int right = size - 1;

    while (left <= right) {
        int mid = left + (right - left) / 2;

        // 如果找到目标元素,则返回其索引
        if (arr[mid] == target) {
            return mid;
        }
        // 如果目标元素在数组的左侧,则继续在左侧子数组中查找
        else if (arr[mid] > target) {
            right = mid - 1;
        }
        // 如果目标元素在数组的右侧,则继续在右侧子数组中查找
        else {
            left = mid + 1;
        }
    }

    // 如果未找到目标元素,则返回 -1
    return -1;
}

int main() {
    int arr[] = {85, 63, 52, 34, 25, 17, 6};
    int size = sizeof(arr) / sizeof(arr[0]);
    int target = 6;

    // 对数组进行排序
    qsort(arr, size, sizeof(int), compare);

    // 调用二分查找算法
    int result = binarySearch(arr, size, target);

    // 检查结果并输出
    if (result != -1) {
        printf("元素 %d 存在于数组中,索引为 %d\n", target, result);
    } else {
        printf("元素 %d 不存在于数组中\n", target);
    }

    return 0;
}