本题要求从输入的n个整数中查找给定的x。如果找到,输出x的位置(从0开始数);如果没有找到,输出“not found”。 输入格式: 输入在第一行中给出两个正整数n(≤20)和x,第二行给出n个整数。数字均不超过长整型,其间以空格分隔。 输出格式: 在一行中输出x的位置,或者“not found”。 输入样例1: 5 7 3 5 7 1 9 输出样例1: 2 输入样例2: 5 7 3 5 8 1 9 输出样例2: not found
时间: 2023-05-31 08:20:07 浏览: 136
### 回答1:
题目描述
本题要求从输入的n个整数中查找给定的x。如果找到,输出x的位置(从0开始数);如果没有找到,输出“not found”。
输入格式:
输入在第一行中给出两个正整数n(≤20)和x,第二行给出n个整数。数字均不超过长整型,其间以空格分隔。
输出格式:
在一行中输出x的位置,或者“not found”。
输入样例1:
5 7
3 5 7 1 9
输出样例1:
2
输入样例2:
5 7
3 5 8 1 9
输出样例2:
not found
算法1
(顺序查找) $O(n)$
顺序查找即从头到尾遍历整个数组,查找给定的数x,如果找到,输出其位置,否则输出not found。
时间复杂度
遍历整个数组,时间复杂度为O(n)。
C++ 代码
算法2
(二分查找) $O(logn)$
二分查找即将数组分为两部分,判断给定的数x在哪一部分,然后递归查找。
时间复杂度
每次查找都将数组缩小一半,时间复杂度为O(logn)。
C++ 代码
### 回答2:
题目描述
本题要求从输入的 n 个整数中查找给定的 x。如果找到,输出 x 的位置(从0开始数);如果没有找到,输出“not found”。
输入格式:
输入在第一行中给出两个正整数 n(≤20)和 x,第二行给出 n 个整数。数字均不超过长整型,其间以空格分隔。
输出格式:
在一行中输出 x 的位置,或者“not found”。
输入样例1:
5 7
3 5 7 1 9
输出样例1:
2
输入样例2:
5 7
3 5 8 1 9
输出样例2:
not found
C++ 代码
#include<bits/stdc++.h>
using namespace std;
int n,x,cnt=0,i,flag=0;
int a[25];
int main()
{
cin>>n>>x;
for(i=0;i<n;i++) cin>>a[i];
for(i=0;i<n;i++)
if(a[i]==x)
flag=1,cnt=i;break;
if(flag==1) cout<<cnt;
else cout<<"not found";
return 0;
}
### 回答3:
题目描述
本题要求从输入的n个整数中查找给定的x。如果找到,输出x的位置(从0开始数);如果没有找到,输出“not found”。
输入格式:
输入在第一行中给出两个正整数n(≤20)和x,第二行给出n个整数。数字均不超过长整型,其间以空格分隔。
输出格式:
在一行中输出x的位置,或者“not found”。
输入样例1:
5 7
3 5 7 1 9
输出样例1:
2
输入样例2:
5 7
3 5 8 1 9
输出样例2:
not found
思路分析
题目需要我们从n个已经给定的整数中查找给定的x是否存在,如果存在则输出x在原始数据输入序列中的索引(从0开始)。
由于原始数据输入序列中的数据是无序的,因此我们遍历这n个数据时,需要对每个数字与x进行比较才能判断是否存在。如果找到了,直接输出该数字对应的位置序号即可,如果遍历完毕后仍未找到,则输出 “not found”提示信息。
考虑到数据比较简单,我们最常用的就是迭代循环方式实现。
Python3代码
n, x = input().split()
lst = list(input().split())
found = False # 标记是否找到
for i in range(len(lst)):
if lst[i] == x:
found = True # 找到了
print(i)
break # 找到位置后结束for循环
if not found: # 没找到
print("not found")
阅读全文