c#获取整数列表子集的最快方法

时间:2013-05-09 16:49:37

标签: c# list math mathematical-optimization

我得到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亿次循环速度

1 个答案:

答案 0 :(得分:0)

处理查找多个集合的交集的最快方法是语言无关的:创建HashSet<int>,使用最短列表中的数据对其进行初始化,然后依次调用剩余的IntersectWith名单。您需要从最短列表开始,因为操作的复杂性为O(n+m),其中nHashSet<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),最好的方法是选择最短的列表进行初始设置。