输入n(n<100)的值,以及n个从小到大排序的整数序列,再输入一个待查找的整数m,使用二分法进行查找该数的序号。
时间: 2024-02-13 08:05:50 浏览: 139
好的,这是一个关于二分查找的问题。下面是代码实现:
```python
n = int(input("请输入整数序列的长度:"))
arr = list(map(int, input("请输入从小到大排序的整数序列:").split()))
m = int(input("请输入待查找的整数:"))
left, right = 0, n-1
while left <= right:
mid = (left + right) // 2
if arr[mid] == m:
print("该数的序号为:", mid+1)
break
elif arr[mid] > m:
right = mid - 1
else:
left = mid + 1
else:
print("序列中不存在该数!")
```
这段代码先读入整数序列的长度n和序列arr,然后再读入待查找的整数m。接着,使用二分法查找该数的序号,如果找到了就输出该数的序号,否则输出“序列中不存在该数!”提示。
相关问题
c语言输入n(n<100)的值,以及n个从小到大排序的整数序列,再输入一个待查找的整数m,使用二分法进行查找该数的序号。
好的,下面是代码实现:
```c
#include <stdio.h>
int main()
{
int n, m, i, left = 0, right, mid;
int a[100];
// 输入n和整数序列
printf("请输入n以及n个从小到大排序的整数序列:\n");
scanf("%d", &n);
for(i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
// 输入待查找的整数
printf("请输入待查找的整数:\n");
scanf("%d", &m);
// 使用二分法查找
right = n - 1;
while(left <= right)
{
mid = (left + right) / 2;
if(a[mid] == m)
{
printf("%d在序列中的位置为%d\n", m, mid + 1);
break;
}
else if(a[mid] > m)
{
right = mid - 1;
}
else
{
left = mid + 1;
}
}
if(left > right)
{
printf("序列中没有找到%d\n", m);
}
return 0;
}
```
程序运行时,首先要输入n和n个整数,然后输入待查找的整数m,程序会使用二分法查找该数在序列中的位置,如果找到了,就输出其位置,否则输出“序列中没有找到该数”。
c语言编程输入n(n<100)的值,以及n个从小到大排序的整数序列,再输入一个待查找的整数m,使用二分法进行查找该数的序号
好的,下面是使用二分法在有序序列中查找元素的C语言代码:
```c
#include <stdio.h>
int binary_search(int arr[], int n, int m)
{
int left = 0, right = n - 1, mid;
while (left <= right) {
mid = (left + right) / 2;
if (arr[mid] == m) {
return mid;
} else if (arr[mid] < m) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
int main()
{
int n, m;
int arr[100];
printf("请输入n和n个从小到大排序的整数:\n");
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
printf("请输入要查找的整数m:\n");
scanf("%d", &m);
int pos = binary_search(arr, n, m);
if (pos == -1) {
printf("未找到该元素\n");
} else {
printf("该元素的序号为:%d\n", pos);
}
return 0;
}
```
注:以上代码假设输入的n不超过100,且输入的n个整数已经从小到大排序。
阅读全文