#include<iostream.h>
#include<fstream.h>
ifstream f("Bac.txt");
using namespace std;
int main()
{
int n,m,i,j,ok,nr=0;
long v[100],p[100];
f>>m;
f>>n;
for(i=1;i<=m;i++)
f>>p[i];
for(i=1;i<=n;i++)
f>>v[i];
for(i=1;i<=n;i++)
{
ok=0;
for(j=1;j<=m;j++)
{
if(v[i]==p[j])
ok=1;
}
if(ok==0)
nr++;
}
cout<<nr;
}
&#34; Bac.txt&#34;文件包含:
6 7
1 2 3 4 7 20
3 5 7 8 9 20 24
我做的这个程序比较了从文件中读取的2个数组的值,并显示了与第一个数组相比第二个数组唯一的值的数量。
我使用的方法是否有效&#34;执行时间&#34;在任何程度上?如果我不将文件的第2行和第3行的数字序列存储到数组中,或者甚至可以使程序做同样的事情,那会更有效吗? (或者从存储内存的角度来看,这只会使它更有效率,但是还不能按时间执行吗?)
答案 0 :(得分:0)
您的算法目前 O(N 2 ),这不是特别好。
如果对这两个序列进行了排序,只需合并两个数组即可在 O(N)时间内完成此操作。
如果两个序列未排序,您可以使用std::set
在 O(N.logN)时间内进行排序。