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

本文关键字:列表 子集 方法 整型 获取 | 更新日期: 2023-09-27 18:12:58

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

  • I) 200.000整数值
  • II) 30000整数值
  • III) 10000个整数值
  • IV) 200个整数值
数学术语

A n B n C n D.我需要1000个并发用户。

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

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

处理多个集合交集的最快方法是与语言无关的:创建一个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),所以最好的方法是选择最短的列表来制作初始集合。