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

  • 在字典中,存储的是[键,值],鸠合能够看做[值,值]的情势存储元素,字典也称为映照
要领形貌备注
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
}
    原文作者:王远东
    原文地址: https://segmentfault.com/a/1190000018030164
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞