求两有序数组是否有相同元素

来源:互联网 发布:cs go mac 闪退 编辑:程序博客网 时间:2024/06/07 12:17
//判断两个有序数组中是否存在相同的元素#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开始比较。

还可以优化就是比较两者的交集部分,速度更快。

原创粉丝点击