C#中位的快速排列
我正在实现Charikar对局部敏感散列的快速搜索,并且正在寻找一种在C#中快速排列位(在MMIX中可以在一个操作中完成的事情)的方法。
要求是:
我知道Knuth详细介绍了这一点,但我想知道是否有任何.NET / C#特定的解决方案。
编辑:我使用.NET版本3.5。
由于C#没有提供Knuth在C中没有的任何位操作指令,不,没有.NET / C#特定的解决方案。
同时,.NET确实提供动态编译,这将帮助您有效地重复执行shuffle。
什么版本的.NET? 最简单的方法可能是使用Knuth算法,并在Expression<Func<ulong, ulong>>
编译结果操作,然后将结果编译为Func<long, long>
委托。