散列表,散列函数,碰撞处理解决:线性探测法
2017-04-11 11:35
369 查看
散列表,散列函数,碰撞处理解决:线性探测法
/* * 散列表,散列函数,碰撞处理解决:线性探测法 * 原理:散列表位置碰撞时,检查散列表下一个位置是否为空,为空就存入数据;不为空,继续检测下一个位置。 * 直到找到一个空的位置为止。 * 当数组的大小是要存储的数据两倍以上时,线性探测法比开链法好 * * */ function HashTable() { this.table = new Array(137); this.values = []; this.betterHash = betterHash; this.showDistro = showDistro; this.put = put; this.get = get; } // put for linear probing function put(key, data) { var pos = this.betterHash(key); if (this.table[pos] == undefined) { this.table[pos] = key; this.values[pos] = data; }else{ while (this.table[pos] != undefined) { pos++; } this.table[pos] = key; this.values[pos] = data; } } function betterHash(string) { const H = 37; var total = 0; for (var i = 0; i < string.length; ++i) { total += H * total + string.charCodeAt(i); } total = total % this.table.length; if (total < 0) { total += this.table.length-1; } return parseInt(total); } function showDistro() { for (var i = 0; i < this.table.length; ++i) { if (this.table[i] != undefined) { console.log(this.table[i] + ": " + this.values[i]); } } } // get for linear probing function get(key) { var hash = this.betterHash(key); for (var i = hash; this.table[hash] != undefined; i++) { if (this.table[hash] == key) { console.log("查找到的键值为: "+this.values[hash]); return this.values[hash]; } } console.log("无该键值!"); return undefined; } /*测试线性探测法*/ var someNames = ["David", "Jennifer", "Donnie", "Raymond", "Cynthia", "Mike", "Clayton", "Danny", "Jonathan"]; var hTable = new HashTable(); for (var i = 0; i < someNames.length; ++i) { hTable.put(someNames[i],someNames[i]); } hTable.showDistro(); hTable.get("Jennifer");
相关文章推荐
- 哈希冲突的处理【闭散列方法-线性探测和二次探测】
- java 解决Hash(散列)冲突的四种方法--开放定址法(线性探测,二次探测,伪随机探测)、链地址法、再哈希、建立公共溢出区
- java 解决Hash(散列)冲突的四种方法--开放定址法(线性探测,二次探测,伪随机探测)、链地址法、再哈希、建立公共溢出区
- 散列表(三):冲突处理的方法之开地址法(线性探测再散列的实现)
- 12、线性探测法解决散列表保存字典的碰撞问题
- 处理哈希冲突的闭散列方法-线性探测
- 采用散列函数H(k)=3×k MOD 13并用线性探测开放地址法处理冲突,在数列地址空间[0..12]中对关键字序列22,41,53,46,30,13,1,67,51
- 散列表(三):冲突处理的方法之开地址法(线性探测再散列的实现)
- 散列表(三)冲突处理的方法之开地址法: 线性探测再散列的实现
- 11、线性探测法解决散列表碰撞问题
- 线性探测再散列解决冲突的哈希表
- 哈希冲突的处理【闭散列方法-线性探测和二次探测】
- 浅谈哈希函数与线性探测再散列
- 数据结构--解决散列冲突,平方探测法
- 散列表--线性探测法
- hash线性探测开放定址法解决冲突
- 散列(2)线性探测法和双重散列法
- 哈希散列冲突线性探测再散列算法
- 【哈希表】线性探测再散列的相关知识与计算
- 散列表(四):冲突处理的方法之开地址法(二次探测再散列的实现)