c语言编程实现折半查找算法
时间: 2023-10-01 18:06:49 浏览: 130
折半查找算法(又称二分查找)是一种针对有序数组的查找算法,它的基本思想是将数组分成两部分,判断要查找的元素在哪一部分中,然后再对该部分进行查找,不断重复这个过程直到找到要查找的元素或者确定该元素不存在为止。
下面给出一个 C 语言编写的折半查找算法的示例代码:
```c
#include <stdio.h>
int binary_search(int arr[], int n, int x) {
int left = 0, right = n - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == x) {
return mid;
} else if (arr[mid] > x) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return -1;
}
int main() {
int arr[] = {1, 3, 4, 6, 8, 9, 11, 13, 15};
int n = sizeof(arr) / sizeof(arr[0]);
int x = 6;
int index = binary_search(arr, n, x);
if (index != -1) {
printf("The index of %d is %d\n", x, index);
} else {
printf("%d is not in the array.\n", x);
}
return 0;
}
```
在上面的代码中,`binary_search` 函数用来执行折半查找操作,它的参数 `arr` 是一个有序的整数数组,`n` 是数组的长度,`x` 是要查找的元素。函数的返回值是要查找元素在数组中的索引,如果元素不存在则返回 `-1`。
在 `binary_search` 函数中,首先初始化左右边界,然后在循环中不断缩小查找范围,直到找到要查找的元素或者确定该元素不存在为止。在每次循环中,都计算出当前查找范围的中间位置 `mid`,然后将要查找的元素与中间位置的元素进行比较,如果相等则返回 `mid`,如果要查找的元素比中间位置的元素小,则缩小右边界,否则缩小左边界。
最后在 `main` 函数中,定义了一个有序的整数数组 `arr`,将要查找的元素 `x` 设置为 `6`,然后调用 `binary_search` 函数进行查找,最终输出查找结果。
运行上面的代码,输出结果如下:
```
The index of 6 is 3
```
这表示要查找的元素 `6` 在数组中的索引为 `3`。
阅读全文