题目描述
请编写程序,将nnn个整数存入顺序表,对任一给定整数xxx,查找其在顺序表中的位置。
输入格式:
输入首先在第一行给出正整数nnn(≤104\le 10^4≤104);随后一行给出nnn个 int 范围内的不重复的整数,数字间以空格分隔;最后一行给出待查找的元素xxx,也是 int 范围内的整数。
输出格式:
在一行中输出xxx在顺序表中的位置,即数组下标。如果没找到,则输出 -1。注意数组下标从 0 开始。
输入样例:
5 1 2 3 4 5 4输出样例:
3输入样例:
5 4 3 6 8 0 1输出样例:
-1解题思路
顺序表在内存中是连续存储的,查找元素xxx最直接的方法是顺序查找(线性查找):从下标 0 开始逐个比较,找到第一个等于xxx的元素即返回其下标。
- 由于题目保证数据不重复,第一个匹配到的位置就是唯一答案;用
pos记录结果,默认 -1 表示未找到。 - 时间复杂度:O(n)O(n)O(n),最坏情况需要比较全部元素。
- 空间复杂度:O(n)O(n)O(n)(存储顺序表本身)。
代码流程说明
- 读入nnn,并将nnn个整数存入数组
a。 - 读入待查找元素xxx。
- 将
pos初始化为 -1。 - 从下标 0 到n−1n-1n−1遍历数组,若
a[i] == x,记录pos = i并跳出循环。 - 输出
pos并换行。
代码实现
#include<iostream>usingnamespacestd;constintMAXN=10005;inta[MAXN];intmain(){intn,x;cin>>n;for(inti=0;i<n;++i)cin>>a[i];cin>>x;intpos=-1;for(inti=0;i<n;++i){if(a[i]==x){pos=i;break;}}cout<<pos<<endl;return0;}