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

首頁 > 編程 > JavaScript > 正文

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

2019-11-19 12:10:18
字體:
來源:轉載
供稿:網友

本文實例講述了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 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;  }}/*散列函數*/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;  }}/*測試開鏈法*/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");

使用在線HTML/CSS/JavaScript代碼運行工具http://tools.VeVB.COm/code/HtmlJsRun測試上述代碼,可得如下運行結果:

更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《JavaScript數學運算用法總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript數組操作技巧總結》、《JavaScript排序算法總結》、《JavaScript遍歷算法與技巧總結》、《JavaScript查找算法技巧總結》及《JavaScript錯誤與調試技巧總結

希望本文所述對大家JavaScript程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 临朐县| 乌审旗| 东莞市| 呼图壁县| 昌平区| 边坝县| 清新县| 红桥区| 敦煌市| 长葛市| 壤塘县| 拜泉县| 镇宁| 蛟河市| 勃利县| 苏尼特左旗| 博客| 潮州市| 城市| 和硕县| 防城港市| 开封市| 岗巴县| 红桥区| 松阳县| 遵义市| 永寿县| 望都县| 怀远县| 嵊州市| 漯河市| 兴国县| 遵义县| 兴宁市| 龙里县| 农安县| 安远县| 柳州市| 裕民县| 天气| 万全县|