实现二分搜索算法: 已知不重复且已经按从小到大排好的 m个整数的数组A[1..m](设m=2k k是一个确定的非负整数)。对于给定的整数c
时间: 2024-02-11 20:05:58 浏览: 68
,实现二分搜索算法可以查找c是否在数组A中出现,并返回其下标。
二分搜索算法的实如下:
```
int binary_search(int A[], int c, int left, int right) {
if (left > right) { // 搜索失败
return -1;
}
int mid = (left + right) / 2; // 计算中间位置
if (A[mid] == c) { // 找到了
return mid;
} else if (A[mid] > c) { // c在左半部分
return binary_search(A, c, left, mid - 1);
} else { // c在右半部分
return binary_search(A, c, mid + 1, right);
}
}
```
在主函数中,调用`binary_search`函数进行搜索:
```
int main() {
int A[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int c = 7;
int n = sizeof(A) / sizeof(A[0]);
int result = binary_search(A, c, 0, n - 1);
if (result == -1) {
printf("未找到%d\n", c);
} else {
printf("%d的位置是%d\n", c, result);
}
return 0;
}
```
该程序将输出:
```
7的位置是6
```
阅读全文