Sim*_*mon 8 sorting algorithm hash
是否有任何哈希函数与uniq哈希码(如MD5)保持顺序?
注意:我不关心安全性,我需要它进行排序,我有很多块(~1MB大小),我想对它们进行排序,当然我可以使用索引排序但我想减少比较的时间
理论上:如果我有1'000'000块,1MB大小(1'048'576字节),并且它们在最后10个字节中都有差异,那么一个块与另一个块的比较时间将是O(n-10)和如果我将使用QuictSort(使〜(n log2(n))比较)那么比较的总时间将是n log2(n)*(k-10)(其中k是块大小)1'000'000*20*(1'048'576 - 10)
这就是为什么我想生成具有固定大小(例如16个字节)的订单保留哈希码,然后对块进行排序并保存结果(例如:在文件中)
小智 13
CHM(ZJ Czech,G.Havas和BS Majewski)是一种生成保留排序的最小完美散列的算法(例如,如果A <B,则h(A)<h(B)).它每个密钥使用大约8个字节的存储空间.
请参阅:http://cmph.sourceforge.net/chm.html
一般情况下,除非哈希的大小至少等于对象的大小,否则这样的函数是不可能的。
这个论点很简单:如果有 N 个对象,但 M < N 个哈希值,根据鸽巢原理,两个不同的对象会映射到一个哈希值,因此它们的顺序不会保留。
然而,如果我们保证对象的附加属性或放宽要求,则定制或概率解决方案可能成为可能。