数据结构折半查找算法和完整代码
时间: 2023-08-12 17:05:45 浏览: 121
折半查找算法,也称为二分查找算法,是一种在有序数组中查找特定元素的算法。它通过将目标值与数组中间元素进行比较,并根据比较结果缩小查找范围,直到找到目标值或查找范围为空为止。
以下是使用C语言编写的折半查找算法的完整代码示例:
```c
#include <stdio.h>
int binarySearch(int arr[], int low, int high, int target) {
while (low <= high) {
int mid = low + (high - low) / 2;
if (arr[mid] == target) {
return mid; // 目标值找到,返回索引
} else if (arr[mid] < target) {
low = mid + 1; // 目标值在右侧,缩小查找范围
} else {
high = mid - 1; // 目标值在左侧,缩小查找范围
}
}
return -1; // 目标值不存在,返回-1
}
int main() {
int arr[] = {1, 3, 5, 7, 9, 11, 13};
int n = sizeof(arr) / sizeof(arr[0]);
int target = 9;
int result = binarySearch(arr, 0, n - 1, target);
if (result == -1) {
printf("目标值 %d 不存在\n", target);
} else {
printf("目标值 %d 的索引是 %d\n", target, result);
}
return 0;
}
```
在上述代码中,`binarySearch`函数接受一个有序数组`arr`、查找范围的下界`low`、上界`high`和目标值`target`作为参数。它使用一个`while`循环来不断缩小查找范围,直到找到目标值或查找范围为空为止。如果目标值存在,则返回其索引;否则,返回-1。
在`main`函数中,我们定义了一个有序数组`arr`,并计算出其元素个数。然后,我们调用`binarySearch`函数来查找目标值9,并根据返回结果输出相应的信息。
运行上述代码,输出结果为:
```
目标值 9 的索引是 4
```
这表明目标值9在数组中的索引为4。
阅读全文