この記事では、javascript に関する関連知識を提供します。主に、JavaScript がハッシュ テーブルを実装し、最終データが挿入される配列の構造全体をカプセル化する方法に関する関連問題を紹介します。はハッシュテーブルです。皆さんのお役に立てれば幸いです。
関連する推奨事項: JavaScript 学習チュートリアル
オプション 1:
チェーン アドレス方法0~9 の範囲は配列の添字値として使用されます。さらに、配列内の各添字値に対応する位置には数値が格納されなくなり、剰余演算後の剰余が同じ数値で構成される array または linked list## が格納されます。 。
要約:
が存在しないことです。長い 単一のデータ ですが、 チェーン 。このチェーンに一般的に使用されるデータ構造は、配列またはリンク リスト です。2 つのデータ構造の検索効率は次のとおりです。同等です (チェーンの要素は一般に多すぎないため)。 オプション 2: オープン アドレス メソッド
;空白セルの位置を検出するさまざまな方法に応じて、次の 3 つの方法に分けることができます。
ハッシュ テーブルの利点はその速度であるため、ハッシュ関数は高いパフォーマンスを消費する複雑なアルゴリズムを使用できません。速度を向上させる 1 つの方法は、ハッシュ関数の 乗算と除算を最小限に抑えることです。
#霍納法則:在中國霍納法則也叫做
秦九韶演算法變換之前:
加法次數:n次;變換之後:
乘法次數:n次;加法次數:n次;
如果使用大O表示時間複雜度的話,直接從變換前的O(N2)降到了O(N)
。為了確保資料在雜湊表中均勻分佈,當我們需要
使用常數的地方
function HashTable() { // 存放相关的元素 this.storage = []; // 存了多少数据 this.count = 0; // 用于标记数组中一共存放了多少个元素 this.limit = 7; /* 设计哈希函数 ①将字符串转成比较大的数字 ②将大的数字hashCode压缩到数组范围之内 */ HashTable.prototype.hashFunction = function (str, size) { var hashCode = 0; //秦九韶算法(霍纳算法) // 哈希表的长度、N次幂的底数等尽量选取质数 for (var i = 0; i this.limit * 0.75) { var newLimit = this.limit * 2; var prime = this.getPrime(newLimit); this.resize(prime); } }; // 获取 HashTable.prototype.get = function (key) { var index = this.hashFunction(key, this.limit); var bucket = this.storage[index]; if (bucket == null) return null; for (var i = 0; i 7 && this.count 0 ? false : true; }; // size HashTable.prototype.size = function () { return this.count; }; // toString HashTable.prototype.toString = function () { var str = ''; for (var i = 0; i ############相關推薦:###javascript學習教學#########
以上がJavaScript がハッシュ テーブルを実装する方法の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。