C++ 我需要一个比O(size1*size2)更快地检查两个数组的公共元素的函数
我有这个函数,它对我来说太长了(O(n*m))。我需要加快速度。请帮忙C++ 我需要一个比O(size1*size2)更快地检查两个数组的公共元素的函数,c++,arrays,function,C++,Arrays,Function,我有这个函数,它对我来说太长了(O(n*m))。我需要加快速度。请帮忙 bool obs(int a[],int n,int b[],int m){ //2 arrays with sizes for(int i=0;i<n;i++) for(int j=0;j<m;j++) if(a[i]==b[j]) return true; return false; } boolobs(inta
bool obs(int a[],int n,int b[],int m){ //2 arrays with sizes
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
if(a[i]==b[j])
return true;
return false;
}
boolobs(inta[],intn,intb[],intm){//2个大小为
对于(int i=0;i对数组进行排序->O(N logN)(N=max(大小A,大小B)
(可能会进行更快的排序)
然后以迭代器开始这两个元素。增加指向较小元素的迭代器。当到达末尾或迭代器指向相同值时,即完成此操作。->O(N)
总计:O(N logN)
这里要问的是真正测试计算机科学和算法的基本知识和理解。如果你不知道答案,实现这一点的简单代码转储不会真正帮助你理解任何东西或学习任何东西。相反,这里的正确答案应该是去学习计算机科学的相关领域e和实现这一点所需的算法。不幸的是,stackoverflow.com并不是a的替代品。您如何知道您的代码太慢?您是在猜测还是测量它?如果只是猜测,请不要进行优化。有一些工具可以比较执行时间(例如)-但您可能希望在自己的环境中进行测试。