恒定时间设定操作

时间:2010-10-18 18:07:09

标签: c# .net set unsafe operations

是否存在二进制集交集和并集的常量算法?

我想使用位图指向内存中元素的指针,并使用OR表示union,AND表示交集。

现在有人有解决方案吗?

1 个答案:

答案 0 :(得分:1)

使用BitArray类,最多32个元素的常量时间。您可以使用底层的ulong []编写一个自定义的元素来获取最多64个元素。非托管代码使用_mm_or_si128和_mm_and_si128内在函数可以生成128个元素。由于它们的内存对齐要求很难使用,无法从垃圾收集堆中获取。

在您想要优化此类代码的大多数情况下,这些都不是实际数量。它基本上是一个O(n)算法,非常小哦。不妨使用BitArray。