-4

我得到 5 个列表,我需要所有列表的子集。

  • I) 200.000 个整数值
  • II) 30.000 个整数值
  • III) 10.000 个整数值
  • IV) 200 个整数值

用数学术语 A n B n C n D。我需要 1.000 个并发用户。

  • 用 c#最快的方法是什么?
  • 我可以用一个 2 mhz CPU 执行多少个并发操作?20亿循环速度
4

1 回答 1

0

处理查找多个集合的交集的最快方法是与语言无关:创建一个HashSet<int>,用最短列表中的数据对其进行初始化,然后依次调用IntersectWith其余列表。您需要从最短的列表开始,因为操作的复杂性是O(n+m),其中n是 中的项目数HashSet<int>,而m是另一个列表中的项目数。由于IntersectWith将被调用四次,并且设置初始的复杂度HashSet<int>O(n),因此整体复杂度为

O( n + n+m1 + n+m2 + n+m3 + n+m4)
// ^    ^      ^      ^      ^
// |    |      |      |      |
// |   Intersecting with lists 2..5
// |
// Setting up the initial HashSet<int>

由于总数是O(5*n+m1+m2+m3+m4),因此最好的方法是选择最短的列表来制作初始集合。

于 2013-05-09T17:04:17.733 回答