使用二分查找找出数组关键词 c语言
时间: 2024-09-10 09:21:45 浏览: 47
二分查找,也称为折半查找,是一种在有序数组中查找特定元素的高效搜索算法。在C语言中,其基本步骤如下:
1. **初始化**:设置两个指针,`low`表示数组的起始索引,`high`表示数组的结束索引。
2. **比较中间元素**:计算中间索引 `mid`,通常是 `(low + high) / 2`。然后将目标值与数组中间元素进行比较:
- 如果中间元素正好等于目标值,则返回中间索引。
- 如果中间元素大于目标值,说明目标可能在左半部分数组,所以更新 `high` 为 `mid - 1`。
- 如果中间元素小于目标值,说明目标可能在右半部分数组,所以更新 `low` 为 `mid + 1`。
3. **递归或循环**:如果 `low` 大于 `high`,说明目标不存在于数组中,返回 `-1` 或相应错误代码。
以下是简单的二分查找函数实现示例:
```c
#include <stdio.h>
int binarySearch(int arr[], int n, int target) {
int low = 0;
int high = n - 1;
while (low <= high) {
int mid = low + (high - low) / 2;
if (arr[mid] == target)
return mid; // 找到目标
if (arr[mid] < target)
low = mid + 1; // 目标在右半部
else
high = mid - 1; // 目标在左半部
}
return -1; // 没找到目标
}
// 测试代码
int main() {
int array[] = {1, 3, 5, 7, 9};
int size = sizeof(array) / sizeof(array[0]);
int key = 5;
int result = binarySearch(array, size, key);
if (result != -1)
printf("Element found at index %d\n", result);
else
printf("Element not found in the array.\n");
return 0;
}
```
阅读全文