对给定的任意数组(设其长度为 n),使用二分查找方法在此数组中查找与给定值k相等的元素。代码C语言
时间: 2024-12-22 18:28:02 浏览: 21
在C语言中,你可以使用二分查找算法(也称为折半查找)来在一个已排序的数组中查找特定元素。以下是基本的步骤和伪代码:
```c
#include <stdio.h>
// 定义二分查找函数
int binarySearch(int arr[], int left, int right, int k) {
if (right >= left) {
// 找到中间位置
int mid = left + (right - left) / 2;
// 如果中间元素就是目标值,则返回其索引
if (arr[mid] == k)
return mid;
// 如果中间元素小于目标值,在右半部分继续搜索
else if (arr[mid] < k)
return binarySearch(arr, mid + 1, right, k);
// 否则,在左半部分继续搜索
else
return binarySearch(arr, left, mid - 1, k);
}
// 如果数组为空或者未找到目标值,返回-1表示不存在
return -1;
}
int main() {
int arr[] = {1, 3, 5, 7, 9}; // 示例数组,已按升序排列
int n = sizeof(arr) / sizeof(arr[0]);
int k = 5; // 要查找的值
// 调用二分查找函数
int result = binarySearch(arr, 0, n - 1, k);
// 根据结果打印信息
if (result != -1)
printf("元素 %d 发现于索引 %d\n", k, result);
else
printf("元素 %d 没有在数组中找到\n", k);
return 0;
}
```
在这个例子中,`binarySearch`函数接受一个整数数组、起始索引(left)、结束索引(right)以及目标值(k)。如果找到匹配项,它将返回该元素的索引;如果没有找到,返回-1。
阅读全文