输入在第一行先给出非负整数N(<=10);第二行给出N个从小到大排好顺序的整数;第三行给出一个整数X。
时间: 2024-02-05 18:11:49 浏览: 78
这道题是要在一个有序的整数列表里查找一个数X是否存在,可以使用二分查找算法来解决。
以下是 Python 代码实现:
```python
n = int(input())
nums = list(map(int, input().split()))
x = int(input())
left, right = 0, n-1
while left <= right:
mid = (left + right) // 2
if nums[mid] == x:
print(mid)
break
elif nums[mid] < x:
left = mid + 1
else:
right = mid - 1
else:
print(-1)
```
首先,读入输入的参数,包括整数列表的长度N、有序的整数列表nums和待查找的整数x。
然后,通过二分查找算法,在整数列表中搜索x。首先将搜索区间[left, right]初始化为整个列表,然后计算中间位置mid。如果nums[mid]等于x,则找到了目标,输出mid。如果nums[mid]小于x,则目标在mid的右侧,更新左边界left为mid+1。如果nums[mid]大于x,则目标在mid的左侧,更新右边界right为mid-1。重复上述步骤直到left > right,说明整数列表中不存在目标x,输出-1即可。
相关问题
输入在第一行先给出非负整数n(<10);第二行给出n个从小到大排好顺序的整数;第三行给出一个整数x。
好的,我会用中文回复。
题目描述中提到了三行输入,分别是非负整数n、n个从小到大排好顺序的整数和一个整数x。
首先,非负整数n表示接下来要输入的整数个数,要求n小于10。
其次,第二行给出了n个从小到大排好顺序的整数,这些整数可以通过空格分隔开来输入。
最后,第三行给出了一个整数x,表示要查找的目标整数。
需要注意的是,本题要求的是从小到大排好顺序的整数,输入时必须按照这个要求输入。
C语言 将一个给定的整数插到原本有序的整数序列中,使结果序列仍然有序。 输入 输入在第一行先给出非负整数N(<=10);第二行给出N个从小到大排好顺序的整数;第三行给出一个整数X。 输出 在一行内输出将X插入后仍然从小到大有序的整数序列,每个数字后面有一个空格。
以下是使用 C 语言编写的程序,可以实现将一个给定的整数插入到原本有序的整数序列中,使结果序列仍然有序:
```c
#include <stdio.h>
int main() {
int n, i, j, x;
int a[10];
// 读入输入数据
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
scanf("%d", &x);
// 插入整数并排序
for (i = n - 1; i >= 0; i--) {
if (a[i] > x) {
a[i + 1] = a[i];
} else {
break;
}
}
a[i + 1] = x;
// 输出结果
for (i = 0; i < n + 1; i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
```
该程序首先读入输入数据,包括有序整数序列和待插入的整数。然后,程序从序列的末尾开始往前扫描,找到第一个比插入整数小的元素的位置,并将后面的元素后移一个位置,最后将插入整数放在该位置上。最后,程序输出插入整数后的有序序列。
阅读全文