散列表/哈希表的基础知识(上)
来源:互联网 发布:e店宝软件下载 编辑:程序博客网 时间:2024/06/08 05:43
散列的基本概念
【例子】现有11个数,分别是18,23,11,20,2,7,27,30,42,15,34。现定义一个函数h(key) = key mod 17。分别把这11个数存储到大小为17的整型数组(散列表)中。其结果为:
散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。
给定表M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希(Hash)表,函数f(key)为哈希(Hash) 函数。
(以上来自百度百科)散列的基本思想
1.以关键字key为自变量,通过一个确定的函数h(散列函数),计算出对应的函数值h(key),作为数据对象的存储地址。
2.可能不同的关键字会映射到同一个散列地址上,造成散列冲突,因此这种冲突是散列表需要解决的一个问题。一个好的散列函数应该考虑以下几个问题
1.计算简便,以便提高转换速度
2.关键词对应地址空间分布均匀,减少冲突。数字关键词的散列函数构造
1.直接定值法:H(key) = a*key + b(a和b都为常数)
2.除留余数法:H(key) = key mod p(p一般取素数)
3.数字分析法:比如取手机号后5位作为地址
4.折叠法:把关键词拆成位数相同的几部分然后相加
5.平方取中法字符关键词的散列函数构造
1.ASCII码加和法(冲突严重)
2.位移法,示例如下:
0 0
- 散列表/哈希表的基础知识(上)
- 1 线程的基础知识(上)
- 元组、列表、字典的基础知识和比较(二)
- 【python】元组基础知识tuple(和列表的区别)
- python 基础知识(列表 元祖)
- USB基础知识(上)
- Java基础知识(上)
- 散列表(HashTable)探秘 --上
- python基础知识之列表的分片
- python基础知识之列表的加法、乘法
- 关于Python的基础知识8--二维列表
- bootstrap 基础知识学习(列表+表格)
- CSS基础知识三(列表编号 )
- python编程中常用的12种基础知识总结(基础知识,面试可能用得上)
- 散列技术-散列表上的运算
- 散列表在多项式计算上的应用
- 【iOS7的一些总结】9、用列表显示内容(上):列表视图UITableView
- 上拉刷新列表(自定义列表项布局)的实现
- 机器人搬重物
- js_高级教程详细内容个人总结
- 动态规划:击鼓传花
- [设计模式]策略模式
- Android内核解读-应用的安装过程
- 散列表/哈希表的基础知识(上)
- 四大组件之BroadcastReceiver
- 七月初五回家诗
- 一氪钟:浅说 Lucene 倒排索引与分词
- Android设计模式源码解析之模板方法模式
- POJ 3661 Running(dp)
- 设计模式-迭代器模式
- 【数组】Majority Element II
- POJ3295-Tautology