国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > JS > 正文

JS散列表碰撞處理、開鏈法、HashTable散列示例

2024-05-06 16:48:00
字體:
供稿:網(wǎng)友

本文實(shí)例講述了JS散列表碰撞處理、開鏈法、HashTable散列。分享給大家供大家參考,具體如下:

/** * 散列表碰撞處理、開鏈法、HashTable散列。 * 將數(shù)組里的元素位置,也設(shè)置為數(shù)組,當(dāng)兩個(gè)數(shù)據(jù)的散列在同一個(gè)位置時(shí), * 就可以放在這個(gè)位置的二維數(shù)組里,解決了散列函數(shù)的碰撞處理問題 */function HashTable() {  this.table = new Array(137);  this.betterHash = betterHash;//散列函數(shù)  this.showDistro = showDistro;//顯示散列表里的數(shù)據(jù)  this.buildChains = buildChains;//生成二維數(shù)組  this.put = put;//將數(shù)據(jù)存儲(chǔ)到散列表  this.get = get;//從散列表中取出某個(gè)數(shù)據(jù)}// put for separate chainingfunction 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;  }}/*散列函數(shù)*/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() {  var n = 0;  for (var i = 0; i < this.table.length; ++i) {    if (this.table[i][n] != undefined) {      console.log(i + ": " + this.table[i]);    }  }}function buildChains() {  for (var i = 0; i < this.table.length; ++i) {    this.table[i] = new Array();  }}// get for separate chainingfunction get(key) {  var index = 0;  var pos = this.betterHash(key);  while ((this.table[pos][index] != undefined)&&(this.table[pos][index] != key)) {    index += 1;  }  if(this.table[pos][index] == key) {    console.log(key+" 的鍵值為: "+this.table[pos][index]);    return this.table[pos][index];  }else{    console.log("無該鍵值");    return undefined;  }}/*測(cè)試開鏈法*/var someNames = ["David", "Jennifer", "Donnie", "Raymond",  "Cynthia", "Mike", "Clayton", "Danny", "Jonathan"];var hTable = new HashTable();hTable.buildChains();for (var i = 0; i < someNames.length; ++i) {  hTable.put(someNames[i],someNames[i]);}hTable.showDistro();hTable.betterHash("Jennifer");hTable.get("Jennidfer");hTable.get("Jennifer");

可得如下運(yùn)行結(jié)果:

JS,散列表,碰撞,開鏈法,HashTable散列

希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到JavaScript/Ajax教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 黑龙江省| 永州市| 左权县| 蓬安县| 通城县| 镶黄旗| 噶尔县| 曲阳县| 乌拉特后旗| 新竹市| 德昌县| 长阳| 太原市| 长治市| 博客| 涿州市| 尖扎县| 巴青县| 洪湖市| 滁州市| 河津市| 随州市| 拉萨市| 吉水县| 岳池县| 和顺县| 嘉定区| 福贡县| 加查县| 达日县| 卢龙县| 东港市| 奈曼旗| 乳源| 罗定市| 井冈山市| 乐平市| 新竹县| 巴南区| 锡林浩特市| 兴安盟|