如何用C语言实现静态数组的顺序查找和折半查找算法?
时间: 2024-12-23 22:27:08 浏览: 10
在C语言中,我们可以分别用简单的循环结构实现静态数组的顺序查找和二分查找(折半查找)算法。
**顺序查找(线性查找)**:
```c
void sequential_search(int arr[], int target, int size) {
for (int i = 0; i < size; i++) {
if (arr[i] == target)
return;
}
printf("元素未找到\n");
}
```
这个函数遍历整个数组,如果找到目标值就返回其索引,否则在循环结束后表示未找到。
**折半查找(二分查找,适用于已排序数组)**:
```c
// 使用递归实现二分查找
int binary_search(int arr[], int low, int high, int target) {
if (high >= low) {
int mid = low + (high - low) / 2;
if (arr[mid] == target)
return mid;
else if (arr[mid] > target)
return binary_search(arr, low, mid - 1, target);
else
return binary_search(arr, mid + 1, high, target);
}
return -1; // 如果目标不在数组中,返回-1
}
```
这个函数首先计算中间元素的索引,然后比较目标值和中间值的关系,如果相等则返回,如果目标小于中间值则在左半部分继续查找,反之在右半部分。
阅读全文