用C语言编程实现折半查找算法
时间: 2023-11-25 13:04:51 浏览: 604
C语言实现折半查找算法
4星 · 用户满意度95%
折半查找算法(Binary Search),也叫二分查找算法,是一种查找有序数组中某个元素的算法。它使用了分治策略来减少需要被查找的元素数量。
具体实现步骤如下:
1. 定义要查找的元素值 key;
2. 定义数组的左右边界,left 和 right,初始值分别为 0 和数组长度减 1;
3. 取中间位置 mid,mid 的值为 (left + right) / 2;
4. 如果 key 等于 mid 位置上的元素,则返回 mid;
5. 如果 key 小于 mid 位置上的元素,则在数组的左半部分进行二分查找,即将 right 改为 mid-1;
6. 如果 key 大于 mid 位置上的元素,则在数组的右半部分进行二分查找,即将 left 改为 mid+1;
7. 如果 left 大于 right,则说明要查找的元素不存在于数组中,返回 -1。
以下是用 C 语言实现折半查找算法的代码:
```c
#include <stdio.h>
int binary_search(int arr[], int n, int key) {
int left = 0;
int right = n - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (key == arr[mid]) {
return mid;
} else if (key < arr[mid]) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return -1;
}
int main() {
int arr[] = {2, 4, 6, 8, 10, 12};
int n = sizeof(arr) / sizeof(arr[0]);
int key = 8;
int index = binary_search(arr, n, key);
if (index == -1) {
printf("Element not found\n");
} else {
printf("Element found at index %d\n", index);
}
return 0;
}
```
以上代码中,我们定义了一个 `binary_search` 函数来实现折半查找算法。在 `main` 函数中,我们定义了一个有序数组 `arr`,然后调用 `binary_search` 函数查找元素值为 `key` 的元素在数组中的位置。如果查找成功,函数返回该元素在数组中的下标;否则返回 -1。最终,根据返回值判断是否查找成功并输出结果。
阅读全文