91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JS中如何實現散列表碰撞處理、開鏈法、HashTable散列

發布時間:2021-08-02 11:36:59 來源:億速云 閱讀:109 作者:小新 欄目:web開發

這篇文章將為大家詳細講解有關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 chaining
function 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 chaining
function 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.jb51.net/code/HtmlJsRun測試上述代碼,可得如下運行結果:

JS中如何實現散列表碰撞處理、開鏈法、HashTable散列

關于“JS中如何實現散列表碰撞處理、開鏈法、HashTable散列”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

js
AI

特克斯县| 木里| 秀山| 莱芜市| 中宁县| 双柏县| 沙雅县| 筠连县| 绵阳市| 谢通门县| 进贤县| 时尚| 沈阳市| 盈江县| 鄂伦春自治旗| 灵武市| 阜阳市| 康马县| 木兰县| 墨玉县| 闵行区| 安远县| 象州县| 从江县| 西畴县| 特克斯县| 永德县| 东乡族自治县| 明溪县| 海城市| 平定县| 康保县| 中超| 綦江县| 井研县| 合肥市| 阿克| 桃园市| 陆丰市| 依兰县| 阆中市|