国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

javascript 數據結構系列

tianhang / 2881人閱讀

摘要:也就是說,它通過計算一個關于鍵值的函數,將所需查詢的數據映射到表中一個位置來訪問記錄,這加快了查找速度。這個映射函數稱做散列函數,存放記錄的數組稱做散列表。如果對象沒有該實例化該處為一對象如果該不存在就增加一個數量

本系列一系列文章的收集關于javascript中的數據結構

如果你對數據結構不太熟悉 可以看這篇文章
如果你只想看代碼 可以看這篇文章
如果你只想star 可以去這里

什么是數據結構
在計算機科學或信息學中,數據結構(英語:data structure)是計算機中存儲、組織數據的方式 From Wikipedia

完整wiki解釋地址

沒有一種數據結構是完美的 你需要了解所有數據結構的優勢和劣勢 合理的運用數據結構實現自己目標

復雜性

算法的復雜性是算法優勢和劣勢的一種體現 算法復雜性包括空間復雜性和時間復雜性

空間復雜性大概或許就是數據結構所需要使用的內存數量
時間復雜性大概或許就是時間啦

如何選擇合適的算法

依賴選擇的數據


array

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...

    yuanzhanghu 評論0 收藏0
  • JavaScript專題系列文章

    摘要:專題系列共計篇,主要研究日常開發中一些功能點的實現,比如防抖節流去重類型判斷拷貝最值扁平柯里遞歸亂序排序等,特點是研究專題之函數組合專題系列第十六篇,講解函數組合,并且使用柯里化和函數組合實現模式需求我們需要寫一個函數,輸入,返回。 JavaScript 專題之從零實現 jQuery 的 extend JavaScritp 專題系列第七篇,講解如何從零實現一個 jQuery 的 ext...

    Maxiye 評論0 收藏0
  • JS系列之目錄

    摘要:設計模式資源整理操作符小知識點實現發郵件功能數據結構與算法資源整理跨域函數的合成與柯里化系列之防抖節流系列之正則系列之系列之系列之編碼系列之系列之操作符對象中的坐標檢測對象或數組系列之機制系列之構造對象系列之總結系列之淺復制與深復制系列之對 Javascript設計模式資源整理JS操作符JS小知識點JS實現發郵件功能數據結構與算法資源整理跨域函數的合成與柯里化JS系列之防抖節流JS系列...

    AaronYuan 評論0 收藏0
  • JavaScript 是如何工作的系列文章已更新到22篇

    摘要:為了方便大家共同學習,整理了之前博客系列的文章,目前已整理是如何工作這個系列,可以請猛戳博客查看。以下列出該系列目錄,歡迎點個星星,我將更友動力整理理優質的文章,一起學習。 為了方便大家共同學習,整理了之前博客系列的文章,目前已整理 JavaScript 是如何工作這個系列,可以請猛戳GitHub博客查看。 以下列出該系列目錄,歡迎點個星星,我將更友動力整理理優質的文章,一起學習。 J...

    lx1036 評論0 收藏0
  • WebSocket系列JavaScript中數字數據如何轉換為二進制數據

    摘要:以和為例,說明中的數字數據如何轉換為二進制數據。對象用來表示通用的固定長度的原始二進制數據緩沖區。中的數字數據如何轉換為二進制數據對和有了一個大概的了解,下面讓我們來看下它是如何進行二進制數據操作的。 概述 本文主要通過對JavaScript中數字數據與二進制數據之間的轉換,讓讀者能夠了解在JavaScript中如何對數字類型(包括但不限于Number類型)進行處理。 二進制數據在日常...

    MASAILA 評論0 收藏0
  • WebSocket系列之字符串如何與二進制數據間進行互相轉換

    摘要:總結通過使用和,我們能夠在數據和二進制數據中進行互相轉換。下一篇系列相關的博客,將會介紹如何通過來向后端傳遞二進制數據,以及如何處理通過收到的二進制數據。 概述 上一篇博客我們說到了如何進行數字類型(如Short、Int、Long類型)如何在JavaScript中進行二進制轉換,如果感興趣的可以可以閱讀本系列第二篇博客——WebSocket系列之JavaScript中數字數據如何轉換為...

    stackfing 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<