问题:看第二个数列中有几个数是第一个数列中有的...
分析:二分搜索实现
#include<iostream>
using namespace std;
int A[1000000],n;
//二分搜索
int binarysearch(int key){
int left =0;
int right=n;
int mid;
while(left<right){
mid = (left + right) / 2;
if(key==A[mid]) return 1; //found...
if(key>A[mid]) left =mid +1; //查找后半部分
else if(key<A[mid]) right = mid;//查找前半部分
}
return 0;
}
int main(){
int i,q,k,sum=0;
cin>>n;
for(i=0;i<n;i++){
cin>>A[i];
}
cin>>q;
for(i=0;i<q;i++){
cin>>k;
if(binarysearch(k)) sum++;
}
cout<<sum<<endl;
return 0;
}