问题是这样的
我有两个文件,每个大约30000行左右,我要读取一个文件的每一行,再到别一个文件里去逐行找(行的前部分相同的),不知道怎样读取,查找更有效率?请大家给些建议

解决方案 »

  1.   

    要查找每行开头固定几个字符是否相同么?如果是,那就简单多了。
    将两个文件分别放到两个二维数组(或者其他什么)里面,第一维记录需要查找的部分,第二维记录行号。
    在读取这两个文件的时候,我们要根据查找部分对数据进行排序,这也是为什么我们要记录行号的原因。
    这样,我们就得到了两个经过排序的二维数组。
    接下来取一下二维数组的长度,用长度短的那个数组作为循环数组,长度长的那个作为被搜索的数组,对于短数组中的每一个需要查找的数据,在长数组中使用二分法进行查找。
    为什么要这样做呢?
    我们假设这两个数组长度分别是m,n,且m>n,因为二分法的时间复杂度是log(m),整个算法的时间复杂度就是nlog(m),这个比不排序直接遍历的时间复杂度mn降低了很多,尤其是在数据很多的情况下。
      

  2.   

    就是从 A 文件里读取一条,再到B 文件里去找,比如这行记录最后一个逗号的前部分和那条数据的最后一个逗号前部分相同,,后部分不同,则把A那条替换掉
    现在就是想怎样处理理有效,逐行比较就太耗时了
      

  3.   

    如果是文本的话,排序、比较效率比较差,所以你应该有个Hash算法,将逗号前的部分计算hash值,这样,只需要比较hash值,具体的比较算法参见6楼。