递推递归练习 P 二分查找

来源:互联网 发布:阿里巴巴农村淘宝加盟 编辑:程序博客网 时间:2024/06/06 14:24

Description

给出含有n个数的升序序列,保证序列中的数两两不相等,这n个数编号从1 到n。
然后给出q次询问,每次询问给出一个数x,若x存在于此序列中,则输出其编号,否则输出-1。

Input

单组输入。首先输入一个整数n(1 <= n && n <= 3000000),接下的一行包含n个数。
再接下来的一行包含一个正整数q(1 <= q && q <= 10000),表示有q次询问。
再接下来的q行,每行包含一个正整数x。

Output

对于每次询问,输出一个整数代表答案。

Sample Input

51 3 5 7 93158

Sample Output

13

-1

这道题很多人提交都超时了,因为我们学的是C++所以大家都用的cin cout 这个耗时比较多,换成scanf和printf就好了,至于二分查找,实现起来就不困难了,设置i=0 j=n-1 mid=(i+j)/2 若a[mid]>要查找的数

j=mid-1,小于就i=mid+1,如此实现;代码如下:

#include <bits/stdc++.h>using namespace std;int a[3000005],n;int find(int x){        int i,j,mid,y;        i=0;        j=n-1;        mid=(i+j)/2;        while(i<=j)        {                if(a[mid]==x)                {                        y=mid+1;                        break;                }                else                {                        if(a[mid]>x)                        j=mid-1;                        else                                i=mid+1;                }                mid=(i+j)/2;        }        if(i>j)y=-1;   //数组中没有要查的数,返回-1;        return y;    }int main(){        int q,x,i,y;        scanf("%d",&n);        for(i=0;i<n;i++)        {                scanf("%d",&a[i]);        }        scanf("%d",&q);        while(q>0)        {                scanf("%d",&x);                y = find(x);                printf("%d\n",y);                q--;        }        return 0;}

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 网上买票不小心买成了学生票怎么办 做横幅标语字打出来老是歪的怎么办 创业板股票暂停上市后钱怎么办 新股东入股公司之前的亏损怎么办 目前公司账面亏损有人要入股怎么办 土地确权后没有土地的人怎么办 老板不发工资跑路了怎么办 别人登录了我的美团账号怎么办 月嫂家政公司快坚持不下去了怎么办 华硕飞马4a手机发热怎么办 超级必发指数手机页面没曲线怎么办 唐小僧理财暴雷了投资者该怎么办 教师资格证面试准考证号忘了怎么办 初中学校说处分不给毕业证怎么办? 自动档一键打火的车没电了怎么办 物流代收货款一直拿不到钱怎么办 丰巢快递柜收不到验证码怎么办 拼多多三级惩罚下架3天怎么办 在万达买的衣服穿一次烂了怎么办 内蒙古对于没有地的农民改怎么办 微信号码重新注册后回零钱怎么办 安卓系统文件苹果手机打不开怎么办 课题必须发表论文吗?查重怎么办 学信网学籍绑定输错5次怎么办 大学学校图书馆借的书丢了怎么办 借阅机里的图书不显示书名怎么办 苹果6s锁屏密码忘了怎么办 父亲去世后妈将父亲存款带走怎么办 狗和别的狗打架腿瘸了怎么办 神经病砍人警察不积极处理怎么办 才买了车里面的气味很大怎么办 家里装修两年了很大的木味怎么办 装修一年的房子夏天味很大怎么办 死了怕下地狱活着又受煎熬怎么办 狗狗的疫苗证丢了怎么办 剃了毛的狗不睡觉怎么办 家里的小狗送人了孩子一直哭怎么办 半个月的小狗一天没拉屎怎么办 把狗狗的毛剃了怎么办 用了维a酸乳膏过敏怎么办 药水点痣留下的红印怎么办