在C语言中如何使用折半查找法,请举例
时间: 2024-05-08 14:14:59 浏览: 245
折半查找法又称二分查找法,它是一种高效的查找算法。它的基本思想是将有序的数据集合分成两部分,取中间的元素进行比较,如果找到了,就返回;如果没有找到,根据比较结果确定要查找的部分,继续折半查找,直到找到为止。
以下是一段使用折半查找法在有序数组中查找指定元素的C语言代码:
```c
#include <stdio.h>
int binarySearch(int arr[], int left, int right, int key) {
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == key) {
return mid;
}
else if (arr[mid] < key) {
left = mid + 1;
}
else {
right = mid - 1;
}
}
return -1;
}
int main() {
int arr[] = {1, 3, 5, 7, 9};
int n = sizeof(arr) / sizeof(arr[0]);
int key = 5;
int index = binarySearch(arr, 0, n - 1, key);
if (index == -1) {
printf("Element not found");
}
else {
printf("Element found at index %d", index);
}
return 0;
}
```
在上面的代码中,`binarySearch`函数接收一个有序数组、左边界、右边界和要查找的元素,返回该元素在数组中的下标。该函数使用`while`循环进行折半查找,直到找到要查找的元素或者搜索区间为空。如果找到了要查找的元素,则返回该元素的下标;否则,根据比较结果缩小搜索区间。在`main`函数中,我们创建一个有序数组,指定要查找的元素为5,调用`binarySearch`函数进行查找,并根据返回值输出结果。
输出结果为:
```
Element found at index 2
```
表示在数组中找到了要查找的元素,并返回该元素在数组中的下标为2。
阅读全文