最小二分法c语言如何实现
时间: 2023-10-19 16:06:55 浏览: 358
最小二分法(也称为二分查找)是一种查找算法,可以在有序数组中查找一个特定的元素。它的思想是将数组分成两个部分,然后判断要查找的元素在哪个部分,再继续在该部分中进行查找,直到找到要查找的元素或者确定该元素不存在于数组中。
以下是最小二分法的C语言实现:
```c
int binarySearch(int arr[], int l, int r, int x)
{
while (l <= r) {
int mid = l + (r - l) / 2;
// 如果 x 被找到,返回 mid
if (arr[mid] == x)
return mid;
// 如果 x 在左半边,继续搜索左半边
if (arr[mid] > x)
r = mid - 1;
// 如果 x 在右半边,继续搜索右半边
else
l = mid + 1;
}
// 如果 x 没有被找到,返回 -1
return -1;
}
```
该函数接受四个参数:一个有序数组 `arr`,数组的左边界 `l`,数组的右边界 `r`,以及要查找的元素 `x`。函数使用一个 while 循环来查找元素,如果找到了元素,返回该元素在数组中的下标;如果没有找到,则返回 -1。
这个实现中的关键是 `mid`,它是左边界和右边界的中间值。随着每次循环的迭代,`mid` 会不断地更新。如果 `mid` 对应的元素等于要查找的元素,函数会返回 `mid`;如果 `mid` 对应的元素大于要查找的元素,说明要查找的元素在左半边,`r` 会更新为 `mid - 1`;如果 `mid` 对应的元素小于要查找的元素,说明要查找的元素在右半边,`l` 会更新为 `mid + 1`。最终,如果要查找的元素没有被找到,函数会返回 -1。
阅读全文