社区
数据结构与算法
帖子详情
请教hash的映射
FSB
2002-07-28 05:03:13
请问将key缩到0 -- (size-1) 用下面那个好?
h = key % (size-1) ;
h = key & (size-1) ;
...全文
74
8
打赏
收藏
请教hash的映射
请问将key缩到0 -- (size-1) 用下面那个好? h = key % (size-1) ; h = key & (size-1) ;
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
FSB
2002-07-29
打赏
举报
回复
to quicmous(快鼠)
通过对源代码的观察,确发觉size的动态增长是以2的倍数.
多谢.
许野平
2002-07-29
打赏
举报
回复
to FSB(游民):
如果size是2的n次幂,则h = key % size与h = key & (size-1)等价.
jack4liang
2002-07-29
打赏
举报
回复
两种方法都一样啊,也许求bitand 会跟快一点,毕竟生成的汇编代码好一点。
#include "stdio.h"
void main(void)
{
unsigned short i = 0x0000;
unsigned short j = 0x000F;
short n;
for(int k=0;k<100;k++)
{
n = (i++) & j;
printf("\n %d",n);
}
}
FSB
2002-07-28
打赏
举报
回复
但在lua的源代码中,使用的是h = key & (size-1) ; 这使到我感到疑惑.
不知作者出于怎样的考虑?
ps: lua在http://www.lua.org/中有下载
许野平
2002-07-28
打赏
举报
回复
更正:应该是 h = key % size
许野平
2002-07-28
打赏
举报
回复
h = key % (size-1) 较好,第二个严格讲是错误的。
LeeMaRS
2002-07-28
打赏
举报
回复
h = key % (size-1) ; 好
LeeMaRS
2002-07-28
打赏
举报
回复
h = key % (size-1) ; 好
《一切皆是
映射
:代码的本质》哈希算法 (
Hash
)
「The Algorithm Design Manual」一书中提到,雅虎的 Chief Scientist ,Udi Manber 曾说过: 在 yahoo 所应用的算法中,最重要的三个是:
Hash
,
Hash
和
Hash
。 例如:git用sha1判断文件更改,密码用MD5生成摘要后加盐等等对
Hash
的应用可看出,
Hash
的在计算机世界扮演着多么重要的角色。无论是密码学、数据结构、现实生...
*哈希
映射
(
Hash
Map)**、**哈希数组 (
Hash
数组)** 和 **哈希运算 (
Hash
Function)**
基础工具/算法。输入数据 -> 输出固定大小的哈希值。核心特性是确定性、快速计算和抗碰撞性。底层存储结构。一个普通数组,哈希表用它来存放数据(或数据指针)。它的索引由键的哈希值计算(通常是取模)得来。高级数据结构。利用哈希函数计算键的哈希值,再
映射
到哈希数组 (桶数组)的索引位置来存储和检索键值对。它高效地解决了键值对存储和快速查找的问题,其高效性依赖于哈希函数的质量和哈希数组大小的合理管理。简单比喻:像一个高效的邮局分拣员。
Hash
,从认识到理解,
Hash
是什么?散列是什么?
映射
是什么?哈希函数散列函数是什么?有了地址值为什么还需要哈希值?
这纯属个人的学习认识,有错的地方,希望各位指正。 散列函数也就是哈希函数;可以简单来说是一种
映射
关系,也就是y=f(x), 可以说是一种可以满射但非单射的
映射
关系,比如MD5,这种128位的密码加密算法,也是解决不了单射,也就是有碰撞。128位是超大的数据,我算过64位就是16EB了,所以128位是人类根本用不完的,但确是可以用完的有限的。所以我说哈希是一种非单射且满射的对应关系,但是我们还是在努力的避免哈希碰撞,也就是想努力的实现单射状态(或双射)。 每当我们存入一个key,这个key就是x,根
Python 中的哈希
映射
(
Hash
Map)
2. `collections.OrderedDict`:保持插入顺序的字典(在 Python 3.7+ 中普通 dict 也保持顺序)1. **无序性**:Python 3.7+ 中字典保持插入顺序,但本质上仍是哈希
映射
,不应依赖顺序。字典是 Python 中最强大和最常用的数据结构之一,合理使用可以大大提高代码的效率和可读性。4. **高效操作**:平均时间复杂度为 O(1) 的查找、插入和删除。注意:可变对象(如列表、字典)不能作为字典的键,因为它们不可哈希。在 Python 中,哈希
映射
主要通过。
使用哈希算法将字符串
映射
到数组中
需求将不同字符串
映射
到对应数组,数组不够时自动成倍扩容,比如有一个数组String[4],现在准备将不同的string
映射
到String[4]上,str5时会自动扩容并重新打散。str1-->String[3] str2-->String[0] str3-->String[2] str4-->String[1]方案 先使用哈希运算,比如用murmur
hash
3_x86_32算法得到一个32位的值a。
数据结构与算法
33,025
社区成员
35,336
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章