散列表(HASH)
来源:互联网 发布:可以刷ubuntu的手机 编辑:程序博客网 时间:2024/05/17 00:52
散列表是数组结构的推广,数组是在整数索引的基础上进行直接寻址操作,O(1)的时间复杂度带来高效的访问
直接寻址HASH表
关键字的范围比较小,集合中的冲突基本为0的情况下,使用HASH,达到O(1)查找,插入,删除
缺点:
关键字范围大时不适用,
范围大(但适用)然而集合数目小,数据填充率低,空间浪费严重;
带函数HASH表
为了解决空间浪费问题,使关键字集合范围集中
散列函数:一种好的方法导出的散列值,在某种程度上应独立于数据可能存在的任何模式,形式相近的关键字应具有截然不同的散列值
除法取余:一个不太接近2的幂的素数,通常是比较合理的选择
乘法:h(k)=m(kA mod 1)
全域散列:随机选择hash函数,使其独立于关键字的特性
// by zjerry 算法导论中设计了一个,需要利用到数论中的知识,暂时先放放
缺点:
引入了冲突问题
避免冲突:尽量随机化
解决冲突:只能尽可能解决
1.链地址法:将散列函数值相同的元素放入到链表中
2.开放寻址法:
利用 探查序列,将HASH表全部利用完,节省了指针链表的空间,缺点是删除问题不好解决
探查序列分类:
线性探查:简易但容易造成聚集
二次探查:容易造成二次聚集(轻度聚集)
双重散列:两个不同函数对关键字求值,相加之和,获得随机性的HASH值
完全散列
可以用两级HASH函数或两级HASH方式来设计完全散列
0 0
- 散列表(Hash Table)
- 散列表 hash
- hash表 散列表
- 散列表(HASH)
- 散列表 hash table
- 散列表 - Hash Table
- 散列表(hash)
- 散列表(Hash Table)
- 字符串Hash散列表设计
- 散列表(哈希hash)初步
- Hash实现(散列表)
- 散列表(hash table)
- Hash散列表知多少
- 数据结构 Hash 散列表详解
- 散列表(Hash table)
- java Hash表 散列表
- hash table——散列表
- Lisp语言:散列表(hash table)
- 配合tomcat jvm参数以便Jconsole或者jvisualvm对jvm进行监控
- 二叉树
- 编程之美读书心得
- git学习二(基本命令,commit、rm、log)
- A星(A*)寻路算法
- 散列表(HASH)
- 这两个故事很短.........
- 【爱上cocos2d-x之二】Cocos2d-x架构和目录结构
- 欢迎您在新浪博客安家
- 博客
- 15款Bug跟踪管理系统
- 二、树之二叉树
- Unable to compile class for JSP
- 心得体会