写二分法查找的C语言代码
时间: 2023-04-07 09:04:53 浏览: 162
以下是二分法查找的C语言代码:
```c
int binarySearch(int arr[], int l, int r, int x) {
while (l <= r) {
int mid = l + (r - l) / 2;
if (arr[mid] == x)
return mid;
if (arr[mid] < x)
l = mid + 1;
else
r = mid - 1;
}
return -1;
}
```
该函数接受一个已排序的整数数组,数组的左右边界和要查找的元素。如果找到该元素,则返回其索引,否则返回-1。
相关问题
二分法查找c语言程序
下面是C语言实现二分法搜索的程序,其中包含了注释以方便理解。代码如下:
```c
#include <stdio.h>
/*
* 二分法搜索函数,输入参数为要搜索的数组、始下标、结束下标以及要搜索的元素。
* 函数返回目标元素在数组中的下标位置,如果未找到则返回-1。
*/
int binary_search(int arr[], int start, int end, int target) {
while (start <= end) {
int mid = start + (end - start) / 2; // 取中间位置
if (arr[mid] == target) { // 找到目标元素,返回下标位置
return mid;
}
if (arr[mid] < target) { // 目标元素在右半部分,更新起始下标
start = mid + 1;
} else { // 目标元素在左半部分,更新结束下标
end = mid - 1;
}
}
return -1; // 未找到目标元素,返回-1
}
int main() {
int arr[] = {2, 5, 7, 9, 11, 15, 18, 20}; // 有序数组
int n = sizeof(arr) / sizeof(arr[0]); // 数组长度
int target = 11; // 要查找的元素
int index = binary_search(arr, 0, n - 1, target); // 查找目标元素
if (index != -1) { // 找到目标元素,输出下标位置
printf("目标元素 %d 在数组中的下标位置为 %d\n", target, index);
} else { // 未找到目标元素
printf("未找到目标元素 %d\n", target);
}
return 0;
}
```
--相关问题--:
NTC二分法查表c语言代码
以下是使用二分法查找表中元素的C语言代码示例:
```c
#include <stdio.h>
int binary_search(int arr[], int n, int target) {
int left = 0, right = n - 1;
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, 13, 15};
int n = sizeof(arr) / sizeof(arr[0]);
int target = 7;
int index = binary_search(arr, n, target);
if (index == -1) {
printf("Element not found\n");
} else {
printf("Element found at index %d\n", index);
}
return 0;
}
```
该代码使用了二分法查找一个已排序的整数数组中的元素。函数 `binary_search` 接受一个整数数组 `arr`、数组长度 `n` 和要查找的元素 `target`,返回该元素在数组中的下标,若不存在则返回 -1。
在 `main` 函数中,我们定义了一个整数数组 `arr`,并调用 `binary_search` 函数查找元素 7 在数组中的下标。
需要注意的是,该代码中的数组已经是排序好的,如果数组未排序则需要先进行排序。另外,二分法查找只适用于已排序的数组。