C语言编程:将n个从小到大排序的整数(n<1000000)从1到n进行编号,并一个待查找的整数m,请使用二分法进行查找
时间: 2024-12-10 15:50:52 浏览: 17
在C语言中,我们可以利用二分查找算法(也叫折半查找)对已排序数组进行查找操作。以下是步骤:
1. 定义一个函数`binary_search`接收两个参数,一个是整数数组`arr[]`,另一个是要查找的目标值`target`,以及数组的长度`n`。
```c
int binary_search(int arr[], int target, int n) {
```
2. 初始化两个指针,`low`表示数组的起始位置(0),`high`表示数组的结束位置(`n - 1`)。
3. 进入循环,只要`low`小于等于`high`:
```c
while (low <= high) {
```
4. 计算中间索引`mid`,并比较目标值和中间元素:
```c
int mid = low + (high - low) / 2;
if (arr[mid] == target)
return mid; // 目标值找到,返回索引
else if (arr[mid] < target)
low = mid + 1; // 目标值大于中间元素,缩小左半部分范围
else
high = mid - 1; // 目标值小于中间元素,缩小右半部分范围
}
```
5. 如果未找到,返回`-1`表示目标不存在于数组中:
```c
return -1;
}
```
6. 结构化程序结束后,整个二分查找函数看起来像这样:
```c
int binary_search(int arr[], int target, int n) {
if (n == 0) // 验证数组是否为空
return -1;
// ... (上述代码)
return -1;
}
```
阅读全文