哈希表
来源:互联网 发布:java 图片合成 锯齿 编辑:程序博客网 时间:2024/06/07 18:42
哈希表是中数据结构,提供快速插入和查找操作。
优点:
- 不论数据有多少,插入和删除接近常量时间o(1),树通常需要O(n)时间级。
缺点:
- 哈希表是基于数组的,创建后难于扩展,某些哈希表被基本填满时候,性能下降严重。(要清楚存储的数据量)
- 没有一个简单方法可以任何一种顺序遍历表中数据项。
哈希表算法-概念及作用
一般线性表,树中,记录在结构中位置是随机的,记录和关键字之间不存在确定的关系。因此在结构中查找记录时候需要进行一系列和关键字的比较,查找效率依赖于查找过程中进行比较的次数。
理想情况下,直接找到需要的记录,因此必须在记录的存储位置和他们的***关键字***之间建立好一个确定的关系f,使得每个关键字和结构中一个唯一的存储位置相应,这就是哈希表。但是如果一个***关键字***对应多条记录,就是哈希表出现了***冲突现象***。
哈希表中常用算法
直接定址法
数学分析法
平方取中法
折叠法
除留余数法
取关键字被某个不大于哈希表长m的数p除后所得余数为哈希地址。
H(key)=key Mod p(p
随机数法
选择一个随机函数,取关键字的随机函数值为它的哈希地址,即
H(key)=random(key),其中random为随机函数。关键字长度不等采用这种方法。
处理冲突的方法
开放地址法
Hi=(H(key)+di) Mod m i=1,2….,k(k<=m-1)其中m表长,di为增量序列。
di取值情况:
- 线性探测再散列 1,2,3…m
- 再散列 1,-1,2,-2,4,-4……-k*k
- 伪随机探测再散列
再哈希法
当再次冲时候,使用第二个,第三个,哈希函数计算地址,直到无冲突时。缺点:计算时间增加。
链地址法
将多有关键字为同义词的记录存储在同一线性链表中。
建立一个溢出分区
假设哈希函数的值域为[0,m-1],则设向量HashTable[0,1….m–1]为基本表,另外设立储存间向量OverTable[0,1,….v]用以存储发生冲突的记录。
- 哈希表
- 哈希表
- 哈希表
- 哈希表
- 哈希表
- .哈希表
- 哈希表
- 哈希表
- 哈希表
- 哈希表
- 哈希表
- 哈希表
- 哈希表
- 哈希表
- 哈希表
- 哈希表
- 哈希表
- 哈希表
- 常用关键字整理
- 【并发编程】使用Semaphore来遏制任务的提交
- Hadoop中MapReduce中combine、partition、shuffle的作用是什么?在程序中怎么运用?
- 自定义控件自定义属性遇到的一个问题
- 使用JDBC实例理解数据库的事务隔离
- 哈希表
- 简化Caffe
- Visual Studio 2017 针对移动开发的新特性介绍
- 关于资产目录assets在AS中创建
- unicode,ansi,utf-8,unicode big endian编码的区别
- checkbox全选 全不选 所有的子项选中或者不全选中后,全选按钮也选中或者不选中
- 非常好的协同过滤入门文章
- 394. Decode String
- Spring与SpringMVC整合