c - 存储大随机数的最佳哈希函数是什么?

标签 c algorithm data-structures

<分区>

我想在数据结构中存储大量数字,为此,我想使用散列函数,以便可以快速插入、删除或查找。但是我无法决定应该使用哪个哈希函数?

一般来说,我想知道如何确定哈希函数是否适用于任何特定问题?

编辑: 我认为人们对使用术语“随机”感到困惑。在这里随机,我的意思是,我没有任何特定范围的数字,我必须从中选择[任何 32 位整数],但我有总数,它将被给予存储在数据结构中,比如大约 5000 个数字.因此,建议我针对这种情况最好的哈希函数,以及为什么你认为它是最好的?

最佳答案

如果数字是均匀随机的,只需使用选择低位的哈希函数即可。

unsigned hash_number(long long x)
{
    return (unsigned) x;
}

关于c - 存储大随机数的最佳哈希函数是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15457914/

相关文章:

c++ - C++ 中的 set 和 unordered_set 有什么区别?

c - C语言工资单生成程序

c - 在动态规划中使用位掩码

java - Q 查询后的输出数组将一些元素设置为零

java - 在 Java 中实现 Graph,出现原始类型错误

python - 从一串硬币抛掷中计算出少数反面的子串

c - 来自 David M. Gay 的 dtoa.c 的 strtod() 函数

c - hashedmap 和指向结构体的指针 : CXX0030: Error: expression cannot be evaluated

c - 我们将 -1 作为 strncmp() 中第三个参数的值传递,会发生什么。 n 要比较的字节数?

algorithm - 根据位置计算组合