简单查找

简介: 给定一个集合,查找元素是否在集合中出现。

问题 I: 简单查找

时间限制: 3 Sec  内存限制: 22 MB

提交: 688  解决: 123

[ 提交][ 状态][ 讨论版]

题目描述


给定一个集合,查找元素是否在集合中出现。


输入


每个测试用例由多行组成,第一行是两个整数n和m,这2个数的取值在1到3 000 000之间。

自第二行起一共有n+m个整数,其中前面n个整数代表集合的元素,随后的m个整数是待查询的数。n+m个整数的取值在范围1到10 000 000之间。


输出


对于每个待查询的数,如果在集合中则输出yes,否则输出no.


样例输入


5 345 56 23 6 56633 66 63 22934 235 555555 230 0


样例输出


no

no

yes

yes

no


思路:快排+二分查找。


#include<stdio.h>  
#include<algorithm>  
using namespace std;  
int a[3333333];  
int main()  
{  
    int n,m,b;  
    while(scanf("%d%d",&n,&m)!=EOF)  
    {  
        if(m==0&&n==0)  
            return 0;  
        int i,j;  
        for(i=0;i<n;i++)  
            scanf("%d",&a[i]);  
        sort(a,a+n);  
        int flag=0;  
        for(j=0;j<m;j++)  
        {  
            flag=0;  
            scanf("%d",&b);   
            int left=0,right=n-1,mid;  
            while(left<=right)  
            {  
                mid=(left+right)/2;  
                if(b==a[mid])  
                {  
                    printf("yes\n");  
                    flag=1;  
                    break;  
                }  
                if(b>a[mid])  
                    left=mid+1;  
                else
                    right=mid-1;  
            }  
            if(flag==0)  
                printf("no\n");  
        }  
    }  
    return 0;  
}
相关文章
|
1月前
|
算法
算法—查找假币
算法—查找假币
47 0
|
3月前
|
算法 C++
查找方式:依次查找与二分查找
查找方式:依次查找与二分查找
|
算法
查找
查找是指在图中寻找特定的节点或边的过程。在图中进行查找操作可以帮助我们找到与目标节点或边相关的信息,或者判断图中是否存在某个节点或边。 在图中进行查找操作的常见算法有: 1. 深度优先搜索(DFS):从图中的一个节点开始,沿着一条路径一直深入直到无法再深入为止,然后回溯到上一个节点,继续深入其他路径,直到找到目标节点或遍历完所有节点。 2. 广度优先搜索(BFS):从图中的一个节点开始,先访问它的所有邻居节点,然后再依次访问邻居的邻居节点,直到找到目标节点或遍历完所有节点。 3. Dijkstra算法:用于在带权有向图中找到从一个节点到其他节点的最短路径。该算法通过不断更新节点的最短距离来逐步
74 0
|
6月前
查找数据
查找数据。
36 1
|
6月前
排序和查找
排序和查找
57 0
|
存储 算法
查找-之有序表查找
待查找的表是有序排列的
94 0
查找-之有序表查找
|
搜索推荐
查找-之二叉排序树(查找、插入、删除)
有序的线性表采用:折半/二分、插值、斐波那契查找相比顺序查找效率得到提高,但是在插入和删除时效率低(为维持数据的有序性) 在高效实现查找操作时,如何提高插入和删除的效率? 在一些应用场景:在查找时需要插入和删除
141 0
查找-之二叉排序树(查找、插入、删除)
|
算法 大数据 索引
算法查找——分块查找
分块查找是折半查找(二分查找)和顺序查找的一种改进方法,分块查找由于只要求索引表是有序的,对块内节点没有排序要求,因此特别适合于节点动态变化的情况。分块查找的速度虽然不如折半查找算法,但比顺序查找算法快得多,同时又不需要对全部节点进行排序
248 0
算法查找——分块查找
|
存储 机器学习/深度学习 算法
如何更快速地查找
查找算法在计算机程序设计中占据着主要的核心位置,查找算法的效率直接影响着计算机程序设计与开发的结果与速度。本章主要会讲到顺序查找、二分查找、索引查找和哈希查找这四种查找算法以及效率分析。掌握了相关查找算法,不管是在代码编程计算机技术上面,还在日常生活中都会有很大的用处。
265 0
如何更快速地查找