数据结构折半查找算法c语言
时间: 2023-07-25 10:14:34 浏览: 125
折半查找算法(Binary Search),也称为二分查找,是一种在有序数组中查找特定元素的搜索算法。其基本思想是将数组按照一定的规则分成两部分,判断待查找元素与数组中间元素的大小关系,从而确定待查找元素在哪一部分,然后继续在该部分中进行查找,直到找到目标元素或查找失败为止。
以下是一个使用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;
}
int main() {
int arr[] = {2, 4, 6, 8, 10, 12, 14, 16};
int n = sizeof(arr) / sizeof(arr[0]);
int target = 10;
int index = binarySearch(arr, 0, n - 1, target);
if (index != -1) {
printf("Target found at index %d\n", index);
} else {
printf("Target not found in the array\n");
}
return 0;
}
```
在上面的代码中,`binarySearch` 函数接受一个有序数组 `arr`、数组的下界 `low`、上界 `high` 和待查找的目标元素 `target`,返回目标元素在数组中的下标,如果目标元素不存在则返回 `-1`。在 `binarySearch` 函数中,首先计算出中间元素的下标 `mid`,然后判断中间元素和目标元素的大小关系,如果相等则返回中间元素的下标,如果中间元素小于目标元素,则在右半部分继续查找,否则在左半部分继续查找,直到找到目标元素或查找失败为止。
在 `main` 函数中,我们定义了一个有序数组 `arr`,并调用 `binarySearch` 函数在数组中查找目标元素 `10`,并输出查找结果。
阅读全文