这个hash算法怎么解释呢?

灵者皆舞 2011-12-31 02:34:13
static unsigned int strHash(const char *z, int nKey){
int h = 0;
assert( nKey>=0 );
while( nKey > 0 ){
h = (h<<3) ^ h ^ sqlite3UpperToLower[(unsigned char)*z++];
nKey--;
}
return h;
}

这个是sqlite中的一个hash函数,代码很简单,但是不知道这个函数好在哪里,谁能帮忙解答一下呢?
...全文
218 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2012-01-07
  • 打赏
  • 举报
回复
同意楼上,代码的本意是让每个字符串随机的均匀的分布在hash表的各个链表上,减少冲突
小晏 2011-12-31
  • 打赏
  • 举报
回复
hash函数的优劣标准是生成的hash值冲突小,只能惊叹各种奇怪的hash函数,说不出为什么。。。还在探索中
灵者皆舞 2011-12-31
  • 打赏
  • 举报
回复
sqlite3UpperToLower
这个直接看名字就能猜出来吧。这个不是关键。

这个是一个256大小数组,里面存放数据,使达到sqlite3UpperToLower['A']='a'的效果。其实就是一个快速字母转小写的处理方法。
欢乐极客 2011-12-31
  • 打赏
  • 举报
回复
不知道sqlite3UpperToLower数组是啥东西的飘过

33,027

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧