博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
哈希方法
阅读量:6629 次
发布时间:2019-06-25

本文共 1210 字,大约阅读时间需要 4 分钟。

字符串处理:

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
hash[N];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;}

  

 

 

 

 

转载地址:http://uwwvo.baihongyu.com/

你可能感兴趣的文章
设置Cookie
查看>>
zookeeper 随记
查看>>
linux查看磁盘系统df,du
查看>>
JavaScript reduce() 方法
查看>>
80386寄存器简介
查看>>
TextRank算法提取关键词的Java实现
查看>>
我是一只草泥马
查看>>
ZOJ - 2112 Dynamic Rankings(BIT套主席树)
查看>>
c# 6.0 学习笔记
查看>>
svn冲突解决
查看>>
Mutations
查看>>
springmvc(3)注解
查看>>
TCP通信详解
查看>>
JavaWeb面试题 有用
查看>>
案例34:火灾自动报警设施检测与验收案例分析(一)
查看>>
mongoDB 文档概念
查看>>
css中margin和padding的区别
查看>>
[js插件]JqueryUI日期插件
查看>>
转:LINUX/UNIX下的回车换行与WINDOWS下的区别
查看>>
厂家未结算差价 iPad退款双重标准惹不满
查看>>