P2249 【深基13.例1】查找 题解

P2249 【深基13.例1】查找
#include<cstdio>
using namespace std;
int a[1000009];
int lb(int a[],int l,int r,int key)
{
      int ans=-1;
      int mid;
      while(l<=r)
      {
           mid=((r-l)>>1)+l;
           if(a[mid]==key)//如果查到,保存答案,并尝试继续向前查找
           {
                   ans=mid;
                   r=mid-1;
           }
           else if (a[mid]>key)//向左边查找
          {
                 r=mid-1;
          }
          else //向右边查找
         {
                 l=mid+1;
         }
     }
     return ans;
}
int main()
{
     int n,m;
     scanf("%d %d",&n,&m);
    for (int i=1;i<=n;i++)
    {
        scanf("%d",&a[i]);
    }
   for (int i=1;i<=m;i++)
   {
        int key;
       scanf("%d",&key);
       printf("%d ",lb(a,1,n,key));
    }
}

posted @ 2022-03-04 08:48  心悟&&星际  阅读(45)  评论(0编辑  收藏  举报