手机版

JS散列表碰撞处理、开链法、哈希表散列示例

时间:2021-08-27 来源:互联网 编辑:宝哥软件园 浏览:

本文实例讲述了射流研究…散列表碰撞处理、开链法、哈希表散列。分享给大家供大家参考,具体如下:

/** * 散列表碰撞处理、开链法、哈希表散列。 * 将数组里的元素位置,也设置为数组,当两个数据的散列在同一个位置时, * 就可以放在这个位置的二维数组里,解决了散列函数的碰撞处理问题*/函数HashTable(){ this。表=新数组(137);这个。更好的散列=更好的散列;//散列函数this.showDistro=showDistro//显示散列表里的数据这个。构建链=构建链;//生成二维数组this.put=put//将数据存储到散列表this.get=get//从散列表中取出某个数据}//放为单独的链式函数put(key,data){ var pos=this。更好的散列(密钥);定义变量索引=0;如果(这个。表[pos][index]==未定义){ this。表[pos][index]=数据;} else { while(this。表[pos][index]!=undefined){ index;}这个。表[pos][index]=数据;}}/*散列函数*/函数betterHash(字符串){ const H=37 var total=0;for(var I=0;我字符串长度;I){ total=H *总字符串。charcodeat(一);} total=total % this。桌子。长度;if(total 0){ total=this。桌子。长度-1;}返回parseInt(总计);}函数showDistro(){ var n=0;for(var I=0;我。此表。长度;i) { if (this.table[i][n]!=未定义){控制台。日志(我‘:’这个。表[I]);} } }函数构建链(){ for(var I=0;我。此表。长度;我){这个。表[I]=新数组();}}//获取为单独的链接函数get(key){ var index=0;var pos=这个。更好的散列(密钥);while ((this.table[pos][index]!=undefined)(这个。表[pos][索引]!=key)){ index=1;}如果(这个。表[位置][索引]==键){控制台。日志(密钥)的键值为:“这个。表[pos][index]);返回这个。表[pos][索引];}else{ console.log('无该键值');返回未定义;}}/*测试开链法*/var someNames=['David ',' Jennifer ',' Donnie ',' Raymond ',' Cynthia ',' Mike ',' Clayton ',' Danny ',' Jonathan '];var Httable=new HashTable();htable。构建链();for(var I=0;i someNames.lengthI){ HTable。放(某个名字[我],某个名字[我]);} htable。show distro();htable。更好的哈希(‘Jennifer’);htable。get(' Jennifer ');htable。get(' Jennifer ');使用在线HTML/CSS/JavaScript代码运行工具:http://工具。JB 51。net/code/HTMljsrun测试上述代码,可得如下运行结果:

更多关于Java脚本语言相关内容感兴趣的读者可查看本站专题: 《JavaScript数学运算用法总结》 、 《JavaScript数据结构与算法技巧总结》 、 《JavaScript数组操作技巧总结》 、 《JavaScript排序算法总结》 、 《JavaScript遍历算法与技巧总结》 、 《JavaScript查找算法技巧总结》 及《JavaScript错误与调试技巧总结》

希望本文所述对大家Java脚本语言程序设计有所帮助。

版权声明:JS散列表碰撞处理、开链法、哈希表散列示例是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。