c语言折半查找for循环
时间: 2023-11-26 12:46:16 浏览: 113
下面是C语言折半查找的for循环代码部分:
```
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;
}
```
其中,arr为待查找的数组,n为数组长度,target为要查找的目标值。该函数返回目标值在数组中的下标,如果不存在则返回-1。
相关问题
C语言习题 折半查找
好的,我可以帮你解答关于折半查找的C语言习题。
折半查找,也叫二分查找,是一种效率很高的查找算法。它要求被查找的序列已经排序。具体的实现可以参考下面的C语言代码:
```c
#include <stdio.h>
int binary_search(int arr[], int n, int x) {
int left = 0, right = n - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == x) {
return mid;
} else if (arr[mid] > x) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return -1; // 表示未找到
}
int main() {
int arr[] = {2, 4, 6, 8, 10};
int n = sizeof(arr) / sizeof(int);
int x = 6;
int idx = binary_search(arr, n, x);
if (idx != -1) {
printf("%d is found at index %d.\n", x, idx);
} else {
printf("%d is not found.\n", x);
}
return 0;
}
```
在上面的代码中,函数`binary_search`接收三个参数:一个整数数组`arr`、数组的长度`n`和要查找的目标值`x`。它返回目标值在数组中的下标,如果未找到则返回-1。
函数中使用了两个指针`left`和`right`来表示当前查找区间的左右端点。在每次循环中,计算中间位置`mid`,判断目标值与中间值的大小关系,如果相等则直接返回中间位置,如果目标值比中间值小,则缩小区间的右端点,否则缩小区间的左端点,直到找到目标值或区间缩小到空集为止。
在主函数中,定义了一个大小为5的整数数组,然后调用`binary_search`函数来查找6在数组中的下标。如果找到,则输出目标值和下标,否则输出未找到的提示信息。
希望这个代码能够帮到你。如果还有其他问题,可以继续问我哦。
折半查找法c语言单重循环代码
根据提供的引用[1],以下是折半查找法C语言单重循环代码:
```c
#include <stdio.h>
#define N 6
int main() {
int a[N] = {1, 5, 10, 15, 20, 30};
int mid;
int value;
int low = 0;
int high = N - 1;
int pos = -1;
printf("请输入要查找的值:");
scanf("%d", &value);
while (low <= high && pos == -1) {
mid = (low + high) / 2;
if (value == a[mid]) {
pos = mid;
} else if (value < a[mid]) {
high = mid - 1;
} else {
low = mid + 1;
}
}
if (pos == -1) {
printf("没有找到!");
} else {
printf("a[%d]=%d\n", pos, value);
}
return 0;
}
```
阅读全文