二分查找算法设计(假设原数组升序)用C语言编写
时间: 2024-09-13 07:12:50 浏览: 43
二分查找算法是一种在有序数组中查找特定元素的高效算法。其基本思想是将数组分成两半,比较中间元素与目标值的大小,从而决定是进一步查找左半部分还是右半部分,这样每次排除一半的元素,直到找到目标值或搜索区间为空。
以下是用C语言编写的一个二分查找算法的示例:
```c
#include <stdio.h>
// 二分查找函数
int binarySearch(int arr[], int left, int right, int x) {
while (left <= right) {
int mid = left + (right - left) / 2;
// 检查x是否在中间位置
if (arr[mid] == x)
return mid;
// 如果x大于中间位置的值,则它只能在右半边
if (arr[mid] < x)
left = mid + 1;
// 否则,x只能在左半边
else
right = mid - 1;
}
// 如果我们到达这里,说明元素不在数组中
return -1;
}
int main(void) {
int arr[] = {2, 3, 4, 10, 40};
int n = sizeof(arr) / sizeof(arr[0]);
int x = 10;
int result = binarySearch(arr, 0, n - 1, x);
if (result == -1)
printf("元素不在数组中\n");
else
printf("元素在数组中的索引为 %d\n", result);
return 0;
}
```
在这段代码中,`binarySearch` 函数接受一个整数数组 `arr`,搜索区间的左右边界 `left` 和 `right`,以及要查找的目标值 `x`。函数返回目标值在数组中的索引位置,如果找不到目标值,则返回 `-1`。
阅读全文