求一个算法
有两个列表中分别存放了两个目录下的文件的子路径和文件名
比如:\abc\aaa.txt或\bb\aa.exe
A列表如下:                 B列表如下:
\abc\we.rm                  \abc\we.rm
\abc\rr.exe                 \abc\tt.txt
\bb\tt.exe                  \cc\aaa.doc
\中文\uu.ini                \cc\说明.htm
\中文\ttg.dat               \bb\tt.exe
      .                          .
      .                          .
      .                          .
两个列表中都可能有几千上万个文件
如何找出其中相同的和不同的文件,请大家发表自己的看法,求一个优秀算法  
比如:\abc\we.rm  和 \abc\we.rm是相同的
      \abc\we.rm  和 \bbb\we.rm是不同的

解决方案 »

  1.   

    分别对A、B的内容递增排序(用交换索引的办法可以避免串的交换,但需要再增加两个整数数组),假如A、B的内容分别有M、N个,则复杂度为O(MLOGM+NLOGN),并假设M小于N,则以B的内容去A中顺序查找,复杂度为O(M),如果二分查找则这块的复杂度还可以下降。关键是要先排序。我能想到的算法就到这里为止。
      

  2.   

    谢谢两位
    这里是要速度最快的算法
    有朋友提意先把A、B的内容计算出hash值,再对hash值进行查找,VB又怎样计算这个hash值呢?我计算不来