《算法笔记》笔记之笔记 - 3、入门模拟(2) - 查找元素

16 篇文章 0 订阅
16 篇文章 0 订阅

3.2 查找元素

给定一些元素,然后查找满足某个条件的某个元素。

一般范围小的数据可以直接使用遍历每一个元素的方法查找;如果范围比较大,那么可以用二分查找等算法来查找。

【codeup 1934】找x

题目描述:

输入一个数n(1<=n<=200),然后输入n个数值各不相同的数,再输入一个值x,输出这个值在这个数组中的下标(从0开始,若不在数组中则输出-1)。

输入格式:

测试数据有多组,输入n(1<=n<=200),接着输入n个数,然后输入x。

输出格式:

对于每组输入,请输出结果。

样例输入:

4

1 2 3 4

3

样例输出:

2

思路:

题目很简单,以样例为例。第一行的4代表我们总共会输入4个数字,第二行即代表要输入的4个数据,我们需要用数组存放。第三行是需要查找的数字,这里是3。使用for循环从0开始查找,3在下标为2的位置。所以样例输出为2。这里我们也要考虑若数字不在给定的数据中的情况,所以可以使用一个标记来记录查询的次数。

参考代码:

#include <cstdio>

// n大于等于1,小于等于200
const int N = 210;
int num[N];

int main(){
    
    int n, x;
    // 由于codeup是多点测试,所以使用while读取到文件末尾
    // 单点测试只需要去掉while即可。
    while(scanf("%d", &n) != EOF){
        // 按顺序读入给定的查询数据
        for(int i=0; i<n; i++){
            scanf("%d", &num[i]);
        }
        // 标记,用来记录查询次数
        int step=0;
        // 读入要查找的x
        scanf("%d", &x);
        // 循环遍历查询数据,查找x
        for(int i=0; i<n; i++){
            // 找到x则输出下标并跳出循环
            // 因为n个数字都是不相同的
            if(num[i] == x){
                printf("%d\n", i);
                break;
            }
            // 否则记录查询次数
            step++;
        }
        // 若循环结束,查询次数等于数据个数,
        // 则x不在数据中,输出-1
        if(step == n){
            printf("-1\n");
        }
    }
    return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值