【发布时间】:2015-10-10 03:19:31
【问题描述】:
首先,大多数声称实现了bucket sort 的地方实际上是在实现counting sort。我的问题是关于在Geek Viewpoint 和Wikipedia 上实现的bucket sort。我并没有真正得到/喜欢 Geek Viewpoint 上的散列函数,也没有得到 Wikipedia 上的散列函数。有人可以解释一种更简单的方法来为桶排序创建一个好的散列函数吗?一般人可以理解和记住的东西。
【问题讨论】:
-
例如,维基百科从哪里获得
k以调用msbits(array[i], k)? -
对于这个问题,
k决定了桶的数量(即总共有2^k桶)。您可以将其视为哈希函数。但请注意,当size(x)小于k时,Wiki 中的表达式(floor(x/2^(size(x)-k)))并不完全正确。 -
所以你的意思是
n=2^(k-1)其中n和k都是我在维基百科示例中看到的变量? -
是的,
n = 2^(k - 1)(或n = 2^k,取决于您如何计算函数msbits- 在 Wiki 中计算不正确)。 -
啊哈,现在我也明白了...所以无论如何,Wiki 上的表达式是不正确的 -
size(x)应该是数字x的函数,与您如何存储它无关。
标签: algorithm sorting hash hash-function bucket-sort