是否存在二进制集交集和并集的常量算法?
我想使用位图指向内存中元素的指针,并使用OR表示union,AND表示交集。
现在有人有解决方案吗?
答案 0 :(得分:1)
使用BitArray类,最多32个元素的常量时间。您可以使用底层的ulong []编写一个自定义的元素来获取最多64个元素。非托管代码使用_mm_or_si128和_mm_and_si128内在函数可以生成128个元素。由于它们的内存对齐要求很难使用,无法从垃圾收集堆中获取。
在您想要优化此类代码的大多数情况下,这些都不是实际数量。它基本上是一个O(n)算法,非常小哦。不妨使用BitArray。