用C语言输入n(n<100)的值,以及n个从小到大排序的整数序列,再输入一个待查找的整数m,使用二分法进行查找该数的序号
时间: 2024-03-05 07:51:23 浏览: 152
好的,以下是使用 C 语言实现的代码:
```c
#include <stdio.h>
int main() {
int n, nums[100], m;
printf("请输入整数序列的长度:");
scanf("%d", &n);
printf("请输入从小到大排序的整数序列:");
for (int i = 0; i < n; i++) {
scanf("%d", &nums[i]);
}
printf("请输入待查找的整数:");
scanf("%d", &m);
int left = 0, right = n - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (nums[mid] == m) {
printf("待查找的整数%d在序列中的位置为%d\n", m, mid + 1);
break;
} else if (nums[mid] > m) {
right = mid - 1;
} else {
left = mid + 1;
}
}
if (left > right) {
printf("待查找的整数%d不在序列中\n", m);
}
return 0;
}
```
首先,我们使用 `scanf` 函数依次读入整数序列的长度 n、整数序列 nums 和待查找的整数 m。然后,我们初始化左右两个指针 left 和 right,分别指向序列的首尾元素。在 while 循环中,我们计算中间位置 mid,如果 nums[mid] 等于 m,则找到了待查找的整数,输出它在序列中的位置。如果 nums[mid] 大于 m,则待查找的整数可能在 mid 的左边,因此我们将右指针 right 移动到 mid 的左边。如果 nums[mid] 小于 m,则待查找的整数可能在 mid 的右边,因此我们将左指针 left 移动到 mid 的右边。当 left > right 时,表示待查找的整数不在序列中,输出相应的提示信息。最后,我们使用 `return 0` 语句结束程序。
阅读全文