python 哈希(hash)
散列表(Hash table)–哈希表
基于高度存取 ,一种典型的“空间换时间”
可以理解为一个线性表,其中元素不是紧密排列,可能存在空隙
散列表,依据关键码值(key value)而进行访问的数据结构,即,它通过把关键码值
映射到表中一个位置来访问记录,以加快查找速度,这个映射函数叫做散列函数,
存放记录的数组叫做散列表
eg
记录的存储位置 = f(关键字)
这里的对应关系f称为散列函数,又称为哈希,采用散列技术将记录存储在一块连续的存储空间中
这块连续存储空间称为散列或者哈希表(Hash table)
使用哈希表进行查询–使用哈希函数将key转换为对应的数组下标,并定位到该空间获取value
(充分利用数组的定位性能进行数据定位)
数组特点:寻址容易,插入和删除困难
链表特点:寻址困难,插入和删除容易
哈希表:寻址容易,插入删除也容易的数据结构
比方我们存储70个元素,但我们可能为这70个元素申请了100个元素的空间。
70/100=0.7,这个数字称为负载因子----高速存取
基于一种结果尽可能随机平均分布的固定函数H为每一个元素安排存储位置,这样就能够避免遍历性质的线性搜索
拉链法:链表的数组
根据元素的一些特征把元素分配到不同的链表中去,
也是根据这些特征,找到正确的链表,再从链表中找出这个元素。
Hash的应用
信息安全领域中加密算法;Hash就是找到一种数据