algorithm - 什么是桶排序的好散列函数?

标签 algorithm sorting hash hash-function bucket-sort

首先,大多数声称实现了桶排序的地方实际上都是在实现计数排序。我的问题是关于在 Geek Viewpoint 上实现的桶排序Wikipedia .我真的不了解/喜欢 Geek Viewpoint 上的散列函数,我也不了解维基百科上的散列函数。有人可以解释一种更简单的方法来为桶排序创建一个好的哈希函数吗?一般人都能理解和记住的东西。

最佳答案

我认为没有普遍适用的哈希函数,这是桶排序的陷阱。如果散列生成大小大致相等的存储桶,则该散列很好,但这显然取决于您要排序的值的分布。这就是为什么当您对分布有先验知识时,桶排序会如此有效,例如,当您必须按高度对人的记录进行排序时。

此外,桶排序的最坏情况不是计数排序,正如 Geekview 链接错误地暗示的那样。最坏的情况(关于时间复杂度)是所有元素都进入同一个桶。

当然,计数排序一种桶排序,特别是哈希h(x) = x的桶排序。计数排序的不同之处在于,一旦您知道您的桶将永远只保存一个值,您实际上并不需要桶来存储元素本身,只需要它们的计数。

关于algorithm - 什么是桶排序的好散列函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31526032/

相关文章:

c++ - avl树中删除过程的实现

java - 一副牌 - 检查顺子

python - 如何在 python 中更改 glob 模块的内部排序系统

C:为大型数据集生成哈希键?

mysql - MySQL (Windows) 可以进行 SHA-256 和 HMAC 哈希吗?

algorithm - 使用计算着色器计算 mipmaps,已经完成了吗?

c# - 在区间 [1000,9999] 中查找素数的更好解决方案,其中第一个和第二个之和

android - 在 jni 中返回错误的 md5 哈希

string - LZ 77 压缩算法

c# - 基于数组对列表进行排序