作者:wjwakx5792 | 来源:互联网 | 2021-08-05 01:29
这篇文章主要介绍了JS散列表碰撞处理、开链法、HashTable散列,结合实例形式分析了散列表碰撞处理、开链法、HashTable散列的定义及简单使用操作技巧,需要的朋友可以参考下
本文实例讲述了JS散列表碰撞处理、开链法、HashTable散列。分享给大家供大家参考,具体如下:
/**
* 散列表碰撞处理、开链法、HashTable散列。
* 将数组里的元素位置,也设置为数组,当两个数据的散列在同一个位置时,
* 就可以放在这个位置的二维数组里,解决了散列函数的碰撞处理问题
*/
function HashTable() {
this.table = new Array(137);
this.betterHash = betterHash;//散列函数
this.showDistro = showDistro;//显示散列表里的数据
this.buildChains = buildChains;//生成二维数组
this.put = put;//将数据存储到散列表
this.get = get;//从散列表中取出某个数据
}
// put for separate chaining
function put(key, data) {
var pos = this.betterHash(key);
var index = 0;
if (this.table[pos][index] == undefined) {
this.table[pos][index] = data;
}else {
while (this.table[pos][index] != undefined) {
++index;
}
this.table[pos][index] = data;
}
}
/*散列函数*/
function betterHash(string) {
const H = 37;
var total = 0;
for (var i = 0; i
使用在线HTML/CSS/Javascript代码运行工具:http://tools.jb51.net/code/HtmlJsRun测试上述代码,可得如下运行结果:
更多关于Javascript相关内容感兴趣的读者可查看本站专题:《Javascript数学运算用法总结》、《Javascript数据结构与算法技巧总结》、《Javascript数组操作技巧总结》、《Javascript排序算法总结》、《Javascript遍历算法与技巧总结》、《Javascript查找算法技巧总结》及《Javascript错误与调试技巧总结》
希望本文所述对大家Javascript程序设计有所帮助。