#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;
}