学习ING

有两个集合,两个集合都是10万个数据(已排序),判断B是不是A的子集,算法时间复杂度为Q(N)

 有两个集合  
 集合A{17192155100。。。}  
 集合B{722100。。。}  
 两个集合都是10万个数据(已排序),要求写一个算法,判断B是不是A的子集,算法时间复杂度为QN
#include <iostream>
using namespace std;
//b是否是a的子集
bool isSubUnion(int a[],int b[],int lenA,int lenB)
{
    
int i=0,j=0;
    
while(i<lenB&&j<lenA)
    {
        
if(b[i]<a[j])
        {
            
return false;
        }
        
else if(b[i]>a[j])
        {
            j
++;

        }
        
else 
        {
            i
++;
            j
++;
        }
    }
    
if(i==lenB)
    {
        
return true;
    }
    
else
    {
        
return false;
    }
    
    
return true;
}
int main(int argc, _TCHAR* argv[])
{
    
int a[]={1,2,3,4,5,9,11,12,13,15};
    
int b[]={1,4,11,13};
    cout
<<isSubUnion(a,b,sizeof(a)/sizeof(int),sizeof(b)/sizeof(int));
    
return 0;
}


posted @ 2010-03-28 20:40  祝雄锋  阅读(974)  评论(0编辑  收藏  举报