c# - 比较两个数组或数组列表,找出相似和不同的值

标签 c# arrays comparison arraylist compare

我有两个字符串数组(或数组列表,如果更简单的话)。我需要比较这些,找出哪些只存在于第一个数组中,哪些存在于两个数组中,哪些只存在于第二个数组中。这些数组的长度不同,并且可能采用不同的顺序。如果有必要,我想我可以对它们进行排序...

我知道我可以一起解决这个问题,但我认为这可能有一个相当标准和高效/“最佳”的解决方案,我比什么都好奇。

我为此使用了 c#,但如果您想用另一种语言编写解决方案,欢迎任何帮助。

谢谢您的帮助!

最佳答案

如果数组很大,那么您将需要使用对这些操作有效的数据结构;数组不是。

如果数组的大小为 n,那么简单的解决方案是 O(n^2) 时间。

如果您对数组进行排序,那么您可以对它们进行二进制搜索以查找项目;排序可能是 O(n lg n) 并且以每次搜索 lg n 的成本搜索 n 次也将是 O(n lg n) 时间。

如果将每个数组变成 HashSet<T>首先,您可以在 O(n) 时间和 O(n) 额外空间内完成。

关于c# - 比较两个数组或数组列表,找出相似和不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3284240/

相关文章:

c++ - C++中的比较

c# - 通过 INotifyPropertyChanged 更新 ListView 的 ItemsSource

c# - 在 LINQ 中混合 Any() 和 First()?

java - Java 中 == 和 .equals 的区别。

php - 当查询返回0条记录时更改MySQL比较值

c - 如何横向字符串的数字,然后分配给变量

c# - 如何在同一案例中添加多个值

c# - 删除项目时的 ListBox List<T> 绑定(bind)问题

c - 处理大型数组而不会出现运行时错误

c - C 中的内存泄漏 - 动态数组丢失数据