代码拉取完成,页面将自动刷新
/**
*
* HashTable
*/
function HashTable() {
// 为什么定义数组长度为137,请看数据结构与算法 javascript 描述.pdf P88
this.table = new Array(137);
this.simpleHash = simpleHash; // 普通散列函数,碰撞几率大
this.genHashCodeV2 = genHashCodeV2; //加强版散列函数
this.showDistro = showDistro;
this.put = put;
this.get = get;
}
/**
* 散列函数
* 将字符串中每个字符的 ASCII 码值相加似乎是一个不错的散列函数。
* 这样散列值就是 ASCII 码值的和除以数组长度的余数
* 本散列函数发生碰撞的机会很大,需要设计更好的散列函数
*/
function simpleHash(data) {
var total = 0;
for (var i = 0; i < data.length; i++) {
total += data.charCodeAt(i);
}
return total % this.table.length;
}
/**
* 比第一个版本更好的散列函数
* 详情请看 《数据结构与算法 javascript 描述.pdf》P91
*/
function genHashCodeV2(data) {
const hcode = 37;
var total = 0;
for (var i = 0; i < data.length; i++) {
total += total + data.charCodeAt(i);
}
total = total % this.table.length;
return parseInt(total);
}
function put(data) {
var pos = this.genHashCodeV2(data); //得到散列值作为键
this.table[pos] = data;
}
function showDistro() {
// var n = 0;
// print("table length = " + this.table.length);
for (var i = 0; i < this.table.length; i++) {
// print("i = " + i);
if (typeof(this.table[i]) != 'undefined') {
print(i + " :" + this.table[i]);
}
}
}
/**
* 后续完善
*/
function get() {
var pos = this.genHashCodeV2(data);
return this.table[pos];
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。