我必须遍历每个DataTable的每一行以检查它们是否相同。
从CSV文件中加载数据后,您将不会有任何索引或任何内容,因此在某些时候,无论是代码还是库,都需要遍历每一行。 , 管他呢。
无论如何,这是一个算法问题,这不是我的专长,但是我的幼稚方法如下:
1:您可以利用数据的任何属性吗?每个表中的所有行是否都是唯一的,是否可以按照相同的条件对它们进行排序?如果是这样,您可以这样做:
- 通过两个表的ID对它们进行排序(使用一些有用的东西,例如快速排序)。如果它们已经被排序,那么您赢了很多。
- 一次浏览两个表,跳过两个表中ID的任何空白。匹配ID的平均重复记录。
这使您可以在(排序时间* 2)+一遍中进行 *** 作,因此,如果我的big-O表示法正确,那么它将是(whatever-sort-time)+ O(m +
n),这非常好。
(修订:这是ΤΖΩΤΤΙΙΟΥ描述的方法)
2:一种替代方法,其效率或多或少取决于您的数据量:
- 遍历表1,对于每一行,将其ID(或计算出的哈希码,或该行的某些其他唯一ID)粘贴到字典(或哈希表,如果您愿意称呼它)中。
- 遍历表2,并针对每一行,查看字典中是否存在ID(或哈希码等)。您正在利用字典速度非常快的事实-我认为O(1)吗?抬头。这一步确实非常快,但是您需要为所有这些字典插入付出代价。
我真的很想知道哪些人比我更了解算法,所以提出了一个:-)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)