哈希方法
2012-09-08 10:17
113 查看
字符串处理:
unix的ELF哈希函数
BKDRHash 哈希
开散列:
挂链实现:
vector<>实现:
unix的ELF哈希函数
unsigned int ELFHash(char* str) { unsigned int hash = 0; unsigned int x = 0; while (*str){ hash = (hash << 4) + (*str++); if ((x = hash & 0xF0000000L) != 0){ hash ^= (x >> 24); hash &= ~x; } } return (hash & 0x7FFFFFFF); }
BKDRHash 哈希
unsigned int BKDRHash(char * str) { unsigned int seed = 31;//31 131 1313 13131 unsigned int key = 0; while (*str) key = key*seed+ *str++; return key&(0x7fffffff); }
开散列:
挂链实现:
void Gua(int tmp){ int tp = tmp%N; if (tp < 0) tp = -tp; node *t = &H[pos++]; t->num = tmp; t->next = tagp[tp]; tagp[tp] = t; } int Cha(int tmp){ int tp = tmp%N; if (tp < 0) tp = -tp; node *q; int count = 0; for (q = tagp[tp]; q != NULL; q = q->next){ if (q->num == tmp) count++; } return count; }
vector<>实现:
vector<int>hash ; void Gua(int tmp){ int tp = tmp%N; if (tp < 0) tp = -tp; hash[tp].push_back(tmp); } int Cha(int tmp){ int tp = tmp%N; if (tp < 0) tp = -tp; int count = 0,k; int sz = hash[tp].size(); for (k = 0; k < sz; ++k){ if (hash[tp][k] == tmp) count++; } return count; }
相关文章推荐
- ruby数组和哈希表的区别,递归,二分查找方法
- 局部敏感哈希(Locality-Sensitive Hashing, LSH)方法介绍
- 6. 哈希。哈希函数的有哪些种? 处理冲突的方法? 闭散列方法有哪些?
- 哈希表的【构造方法】【冲突处理方法】及【哈希拉链法的简单代码实现】
- iOS HAMC(哈希)256带密钥的加密方法
- 散列表(二)冲突处理的方法之链地址法的实现: 哈希查找
- 链地址处理哈希冲突方法
- 处理哈希冲突的闭散列方法-线性探测
- 局部敏感哈希(Locality-Sensitive Hashing, LSH)方法介绍
- 哈希快速检索之三种海明空间中的检索方法
- python学习笔记 --- python中使用哈希方法处理字符与数字,ord()等函数详解
- 解决哈希(HASH)冲突的主要方法
- 使用 PHP 5.5 创建和验证哈希最简单的方法
- 局部敏感哈希(Locality-Sensitive Hashing, LSH)方法介绍
- PHP 5.5 创建和验证哈希最简单的方法详解
- POJ 3261 整数的哈希方法
- 解决哈希(HASH)冲突的主要方法
- 哈希冲突的处理【闭散列方法-线性探测和二次探测】
- POJ2002《Squares》方法:哈希
- 局部敏感哈希(Locality-Sensitive Hashing, LSH)方法介绍