国产探花免费观看_亚洲丰满少妇自慰呻吟_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程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 襄汾县| 许昌县| 竹溪县| 特克斯县| 兴海县| 腾冲县| 大荔县| 安义县| 娱乐| 即墨市| 巴林左旗| 手机| 湖口县| 兰考县| 荣昌县| 洛浦县| 彰化市| 基隆市| 古蔺县| 浦江县| 和静县| 琼结县| 海安县| 宁南县| 汪清县| 罗江县| 鹤庆县| 宣汉县| 都安| 永德县| 河北区| 安国市| 全南县| 萝北县| 大同县| 仙桃市| 罗平县| 丹寨县| 临汾市| 昌邑市| 浮梁县|