0

我有 2 个数据网格视图(例如,DGV-A 和 DGV-B),每个只有一列。我想查找 DGV-A 中的项目是否也存在于 DGV-B 中。基本上,我正在寻找 MS-Excel 中可用的 VLookup 函数。这可以很简单地完成,总线迭代 DGV-A 中的值,并且对于 DGV-A 的每次迭代,迭代 DGV-B 并查看它是否存在(一旦我们找到该项目就中止 DGV-B 的迭代存在)。这需要对 DGV-A 中的所有项目进行。而且因为我的 DGV 可能在每个 datagridviews 中可能有大约 200 个项目(例如,如果 DGV 每个包含 200 个项目,在最坏的情况下,我将进行 200*200 = 40000 比较),恐怕它不会很快。

有什么方法/算法可以以最佳方式做到这一点。(我没有任何数据绑定或数据库,因此不能使用 SQL/DB-Engine;我在 DGV 中的数据是根据用户操作以编程方式动态生成的)

4

1 回答 1

1

在您知道自己确实存在性能问题之前,优化代码的性能通常不是一个好主意。但在这种情况下,我也会使用另一种解决方案来避免O(n * m)操作。

我建议将一个列表中的所有项目插入一个哈希集 -O(n)如果您指定足够大的初始大小并避免以这种方式调整哈希集的大小,这将是。然后只需在哈希集中查找第二个列表中的每个项目O(m)。这样你就可以开始O(n * m)O(n + m)

于 2009-10-07T14:07:37.230 回答