用C语言写 从键盘输入10个已排序的整数到数组a中(从小到大),然后输入另外一个待查找的整数b,采用二分查找(折半查找)算法查找整数b在数组a中的位置,如果找到,则显示该元素的下标,如果没有找到,则显示-1
时间: 2023-06-06 16:05:14 浏览: 208
好的,我可以回答这个问题。以下是 C 代码示例:
```c
#include <stdio.h>
int binary_search(int arr[], int n, int x) {
int left = 0;
int right = n - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == x) {
return mid;
} else if (arr[mid] < x) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
int main() {
int arr[10];
printf("请输入 10 个已排序的整数:\n");
for (int i = 0; i < 10; i++) {
scanf("%d", &arr[i]);
}
int x;
printf("请输入待查找的整数:\n");
scanf("%d", &x);
int index = binary_search(arr, 10, x);
if (index >= 0) {
printf("%d 在数组中的下标为 %d\n", x, index);
} else {
printf("%d 没有在数组中找到\n", x);
}
return 0;
}
```
这段代码中,`binary_search` 函数是二分查找的实现,`main` 函数用于读取输入和调用二分查找函数。注意,输入的数组必须是已排序的,否则二分查找算法无法正确工作。
阅读全文