比较文件中的两个数字序列,有效地执行时间

时间:2013-06-06 01:43:56

标签: c++ mingw

#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行的数字序列存储到数组中,或者甚至可以使程序做同样的事情,那会更有效吗? (或者从存储内存的角度来看,这只会使它更有效率,但是还不能按时间执行吗?)

1 个答案:

答案 0 :(得分:0)

您的算法目前 O(N 2 ,这不是特别好。

如果对这两个序列进行了排序,只需合并两个数组即可在 O(N)时间内完成此操作。

如果两个序列未排序,您可以使用std::set O(N.logN)时间内进行排序。