二分法c语言程序代码
时间: 2023-08-14 15:07:05 浏览: 122
### 回答1:
下面是一个二分法的 C 语言程序代码示例:
```c
#include <stdio.h>
int binary_search(int arr[], int left, int right, int target) {
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
int main() {
int arr[] = {1, 3, 5, 7, 9};
int n = sizeof(arr) / sizeof(arr[0]);
int target = 5;
int result = binary_search(arr, 0, n - 1, target);
if (result == -1) {
printf("Element is not present in array\n");
} else {
printf("Element is present at index %d\n", result);
}
return 0;
}
```
该程序使用一个名为 binary_search 的函数来实现二分查找。该函数接受要搜索的数组、要搜索的左端点和右端点,以及要搜索的目标值作为参数。函数在 while 循环中执行二分查找,直到找到目标值或确定目标值不在数组中为止。如果找到目标值,则返回其索引;否则,函数返回 -1。
在主函数中,我们定义了一个包含 5 个元素的整数数组,并将要查找的目标值设置为 5。然后,我们调用 binary_search 函数来搜索数组中是否存在目标值,并打印结果。
### 回答2:
二分法是一种常用的搜索算法,通过将有序数组分成两部分,查找目标元素是否在数组中。下面给出一个用C语言实现的二分法代码:
```c
#include <stdio.h>
int binarySearch(int arr[], int target, int left, int right) {
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == target) {
return mid;
}
else if (arr[mid] < target) {
left = mid + 1;
}
else {
right = mid - 1;
}
}
return -1;
}
int main() {
int arr[] = {1, 3, 5, 7, 9, 11};
int target = 7;
int size = sizeof(arr) / sizeof(arr[0]);
int result = binarySearch(arr, target, 0, size - 1);
if (result == -1) {
printf("目标元素不在数组中。\n");
}
else {
printf("目标元素在数组中,索引为:%d\n", result);
}
return 0;
}
```
以上代码中,`binarySearch` 函数使用循环实现了二分法搜索。函数传入了一个数组 `arr`、目标元素 `target`、左边界 `left` 和右边界 `right`。循环中,通过计算中间索引 `mid` 来确定目标元素在左半部分还是右半部分,然后不断更新左右边界,缩小搜索范围,直到找到目标元素或搜索范围为空。
在 `main` 函数中,定义了一个有序数组 `arr` 和目标元素 `target`,并计算数组的大小。然后调用 `binarySearch` 函数进行搜索,最后根据返回的结果输出搜索结果。
以上就是一份使用C语言实现的二分法代码。
### 回答3:
二分法,也称为折半查找,是一种在有序数组中查找指定元素的算法。下面是一个使用C语言编写的简单二分法程序代码:
```c
#include <stdio.h>
int binarySearch(int arr[], int left, int right, int key) {
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == key)
return mid;
else if (arr[mid] < key)
left = mid + 1;
else
right = mid - 1;
}
return -1;
}
int main() {
int arr[] = {2, 4, 6, 8, 10, 12, 14, 16};
int n = sizeof(arr) / sizeof(arr[0]);
int key = 10;
int result = binarySearch(arr, 0, n - 1, key);
if (result == -1)
printf("元素 %d 不存在于数组中\n", key);
else
printf("元素 %d 存在于数组中,索引位置为 %d\n", key, result);
return 0;
}
```
上述程序首先定义了一个`binarySearch`函数实现二分法查找。该函数中的`arr`参数代表有序数组,`left`和`right`参数表示数组的左边界和右边界,`key`参数是待查找的元素。函数使用一个循环不断将查找区域缩小,直到找到目标元素或查找区域为空。
在`main`函数中,定义了一个有序数组`arr`并计算它的大小。然后设定了待查找的元素`key`为10,调用`binarySearch`函数进行查找。最后根据返回的结果判断待查找的元素是否存在于数组中,并输出相应的信息。
以上是一个简单的使用C语言编写的二分法程序,可以快速在有序数组中查找指定元素。
阅读全文