//判断两个有序数组中是否存在相同的元素
#include <iostream>
using namespace std;
bool comparation(int *a,int *b){
int i=0,j=0;
while(i<sizeof(a)/sizeof(int) || j<sizeof(b)/sizeof(int)){
if(a[i]==b[j])
return true;
else if(a[i]>b[j]){
j++;
}
else{
i++;
}
}
return false;
}
void main()
{
int a[]={1,2,3,4,5,6,7,8};
int b[]={9,10,11,12,13};
cout<<comparation(a,b)<<endl; //1代表有相同,0代表没有
getchar();
}
利用的思想如下:如果a[i]>b[j],那么b数组向后移一个元素跟a[i]比较,反之亦然,如果一个升序一个降序的话一个从i=0比较,一个从j=sizeof(b)/sizeof(int)-1开始比较。
还可以优化就是比较两者的交集部分,速度更快。