《JavaScript数据结构与算法》笔记——第7章 字典和散列表

4次阅读

共计 716 个字符,预计需要花费 2 分钟才能阅读完成。

在字典中,存储的是 [键,值],集合可以看作[值,值] 的形式存储元素,字典也称为映射

方法
描述
备注

set(key, value)
向字典中添加新元素

delete(key)
通过某个键值从字典中移除对应的数据值

has(key)
判断某个键值是存在于这个字典中

get(key)
通过键值获取对应的数据值

size()
返回字典所有元素的数量

clear()
删除字典中所有元素

keys()
将字典包含的所有键名以数组形式返回

values()
将字典包含的所有数值以数组形式返回

散列表(hashtable)
散列算法的作用是尽可能快的在数据结构中找到一个值散列函数的作用是给定一个键值,返回该值在表中的位置
最常见的散列函数“lose lose”
将每个键值中的每个字母的 ascii 值相加,然后将结果作为值在 hashtable 中的索引,查找的时候通过所以查找,复杂度为 O(1)此方法会在计算 ascii 值和时出现冲突,解决冲突的方法:分离链接,线性查探,双散列法
分离链接
在散列表的每个位置创建一个链表并将元素储存在里面,获取的时候,遍历当前位置上的链表,并比对 key 值,进行获取
线行探查
项表中某个位置增加新元素时,若索引为 index 的位置已经占了,就尝试 index+1,以此类推
散列函数的性能由几个方面构成:插入和检索元素的时间,较低的冲突可能性
“djb2”散列函数
var djb2HashCode = function (key) {
var hash = 5381;// 初始化一个 hash 值并赋值为一个质数(目前大多数都是用 5381)
for (var i = 0; i < key.length; i++) {
hash = hash * 33 + key.charCodeAt(i);
}
return hash % 1013
}

正文完
 0