用C语言写在一个非降序列中,查找与给定值最接近的元素用二分
时间: 2023-05-24 07:05:36 浏览: 90
#include <stdio.h>
int binary_search(int arr[], int n, int target) {
int left = 0, right = n - 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;
}
return left; // 返回插入位置
}
int main() {
int arr[] = {1, 3, 5, 7, 9, 11};
int n = sizeof(arr) / sizeof(int);
int target = 4; // 给定值
int idx = binary_search(arr, n, target);
if (idx == 0) printf("%d", arr[0]);
else if (idx == n) printf("%d", arr[n - 1]);
else {
if (arr[idx] - target < target - arr[idx - 1]) printf("%d", arr[idx]);
else printf("%d", arr[idx - 1]);
}
return 0;
}
阅读全文
相关推荐

















