用C语言实现折半查找
时间: 2023-07-18 18:22:26 浏览: 80
用C语言进行。折半查找
下面是用C语言实现折半查找的代码示例:
```c
#include <stdio.h>
// 折半查找函数
int binarySearch(int arr[], int n, int x) {
int left = 0, right = n - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == x) {
return mid; // 找到目标元素,返回下标
} else if (arr[mid] < x) {
left = mid + 1; // 目标元素在右半部分,缩小查找范围
} else {
right = mid - 1; // 目标元素在左半部分,缩小查找范围
}
}
return -1; // 没有找到目标元素,返回-1
}
// 测试代码
int main() {
int arr[] = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19};
int n = sizeof(arr) / sizeof(int);
int x = 7; // 查找元素7
int index = binarySearch(arr, n, x);
if (index != -1) {
printf("元素%d在数组中的下标为%d\n", x, index);
} else {
printf("元素%d不在数组中\n", x);
}
return 0;
}
```
在上面的代码中,`binarySearch`函数接收一个有序数组、数组长度和要查找的元素,返回目标元素在数组中的下标,如果找不到则返回-1。在函数中,使用两个变量`left`和`right`表示当前查找的区间左右边界,然后不断将区间折半,根据目标元素与中间元素的大小关系来确定下一步查找的区间。最终如果找到目标元素,则返回下标;否则返回-1。在`main`函数中,我们测试了查找元素7的情况,输出了目标元素在数组中的下标。
阅读全文