摘要:也就是說,它通過計算一個關于鍵值的函數,將所需查詢的數據映射到表中一個位置來訪問記錄,這加快了查找速度。這個映射函數稱做散列函數,存放記錄的數組稱做散列表。如果對象沒有該實例化該處為一對象如果該不存在就增加一個數量
本系列一系列文章的收集關于javascript中的數據結構
如果你對數據結構不太熟悉 可以看這篇文章
如果你只想看代碼 可以看這篇文章
如果你只想star 可以去這里
在計算機科學或信息學中,數據結構(英語:data structure)是計算機中存儲、組織數據的方式 From Wikipedia
完整wiki解釋地址
沒有一種數據結構是完美的 你需要了解所有數據結構的優勢和劣勢 合理的運用數據結構實現自己目標
復雜性算法的復雜性是算法優勢和劣勢的一種體現 算法復雜性包括空間復雜性和時間復雜性
空間復雜性大概或許就是數據結構所需要使用的內存數量
時間復雜性大概或許就是時間啦
依賴選擇的數據
An Array data structure, or simply an Array, is a data structure consisting of a collection of elements (values or variables), each identified by at least one array index or key. The simplest type of data structure is a linear array, also called one-dimensional array. From Wikipedia
js 有array結構不過不是很強大 我們可以自定義一下一個加強版
class MyArray { constructor() { this.array = []; } add(data) { return this.array.push(data); } remove(data) { // 如果找到數據就刪除 if(~this.array.indexOf(data)) { this.array.splice(this.array.indexOf(data), 1); } } search(data) { // 如果找打數據就返回 if(~this.array.indexOf(data)) { return this.array.indexOf(data); } else { return null; } } getAtIndex(index) { return this.array[index]; } length() { return this.array.length; } print() { console.log(this.array.reduce(function(prev, curr) { return prev + curr + " "; }, "").trim()); } }hashtable
散列表(Hash table,也叫哈希表),是根據關鍵字(Key value)而直接訪問在內存存儲位置的數據結構。也就是說,它通過計算一個關于鍵值的函數,將所需查詢的數據映射到表中一個位置來訪問記錄,這加快了查找速度。這個映射函數稱做散列函數,存放記錄的數組稱做散列表。
class HashTable { constructor(size) { this.values = {}; this.numberOfValues = 0; this.size = size; } add(key, value) { var hash = this.calculateHash(key); // 如果對象沒有該key 實例化該key處為一對象 if(!this.values.hasOwnProperty(hash)) { this.values[hash] = {}; } // 如果該key不存在 就增加一個數量 if(!this.values[hash].hasOwnProperty(key)) { this.numberOfValues++; } this.values[hash][key] = value; } remove(key) { var hash = this.calculateHash(key); if(this.values.hasOwnProperty(hash) && this.values[hash].hasOwnProperty(key)) { delete this.values[hash][key]; this.numberOfValues--; } } calculateHash(key) { return key.toString().length % this.size; } search(key) { var hash = this.calculateHash(key); if(this.values.hasOwnProperty(hash) && this.values[hash].hasOwnProperty(key)) { return this.values[hash][key]; } else { return null; } } length() { return this.numberOfValues; } print() { var string = ""; for(var value in this.values) { for(var key in this.values[value]) { string += this.values[value][key] + " "; } } console.log(string.trim()); } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/86274.html
摘要:寫在前面目前專注深入學習,特花了點時間整理了一些前端學習相關的書籍。大致分為以下大系列系列系列基礎系列應用系列進階系列類庫系列框架系列。這些書籍在這里免費提供下載,有興趣的一起學習。 寫在前面 目前專注深入JavaScript學習,特花了點時間整理了一些前端學習相關的書籍。 大致分為以下7大系列:CSS系列、DOM系列、JavaScript基礎系列、JavaScript應用系列、Ja...
摘要:專題系列共計篇,主要研究日常開發中一些功能點的實現,比如防抖節流去重類型判斷拷貝最值扁平柯里遞歸亂序排序等,特點是研究專題之函數組合專題系列第十六篇,講解函數組合,并且使用柯里化和函數組合實現模式需求我們需要寫一個函數,輸入,返回。 JavaScript 專題之從零實現 jQuery 的 extend JavaScritp 專題系列第七篇,講解如何從零實現一個 jQuery 的 ext...
摘要:為了方便大家共同學習,整理了之前博客系列的文章,目前已整理是如何工作這個系列,可以請猛戳博客查看。以下列出該系列目錄,歡迎點個星星,我將更友動力整理理優質的文章,一起學習。 為了方便大家共同學習,整理了之前博客系列的文章,目前已整理 JavaScript 是如何工作這個系列,可以請猛戳GitHub博客查看。 以下列出該系列目錄,歡迎點個星星,我將更友動力整理理優質的文章,一起學習。 J...
摘要:以和為例,說明中的數字數據如何轉換為二進制數據。對象用來表示通用的固定長度的原始二進制數據緩沖區。中的數字數據如何轉換為二進制數據對和有了一個大概的了解,下面讓我們來看下它是如何進行二進制數據操作的。 概述 本文主要通過對JavaScript中數字數據與二進制數據之間的轉換,讓讀者能夠了解在JavaScript中如何對數字類型(包括但不限于Number類型)進行處理。 二進制數據在日常...
摘要:總結通過使用和,我們能夠在數據和二進制數據中進行互相轉換。下一篇系列相關的博客,將會介紹如何通過來向后端傳遞二進制數據,以及如何處理通過收到的二進制數據。 概述 上一篇博客我們說到了如何進行數字類型(如Short、Int、Long類型)如何在JavaScript中進行二進制轉換,如果感興趣的可以可以閱讀本系列第二篇博客——WebSocket系列之JavaScript中數字數據如何轉換為...
閱讀 1436·2021-09-02 19:23
閱讀 1586·2021-08-11 11:19
閱讀 641·2019-08-30 15:55
閱讀 1653·2019-08-30 12:50
閱讀 2241·2019-08-30 11:23
閱讀 2180·2019-08-29 13:13
閱讀 1500·2019-08-28 18:13
閱讀 3344·2019-08-26 11:53