![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
基础数据结构
ygx_work
好好学习,天天向上
展开
-
笔记 前端需要了解的时间复杂度
什么是时间复杂度?通常使用最差的时间复杂度来衡量一个算法的好坏。常数时间 O(1) 代表这个操作和数据量没关系,是一个固定时间的操作,比如说四则运算。对于一个算法来说,可能会计算出操作次数为 aN + 1,N 代表数据量。那么该算法的时间复杂度就是 O(N)。因为我们在计算时间复杂度的时候,数据量通常是非常大的,这时候低阶项和常数项可以忽略不计。当然可能会出现两个算法都是 O(N) 的时间复杂度,那么对比两个算法的好坏就要通过对比低阶项和常数项了。...原创 2020-05-17 16:49:18 · 370 阅读 · 0 评论 -
笔记 前端需要了解的常见数据结构--堆
概念堆通常是一个可以被看做一棵树的数组对象。堆的实现通过构造二叉堆,实为二叉树的一种。这种数据结构具有以下性质。任意节点小于(或大于)它的所有子节点堆总是一棵完全树。即除了最底层,其他层的节点都被元素填满,且最底层从左到右填入。将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。实现大根堆堆的每个节点的左边子节点索引是 i * 2 + 1,右边是 i * 2 +...原创 2020-05-06 22:35:45 · 133 阅读 · 0 评论 -
笔记 前端需要了解的常见数据结构--并查集
概念并查集是一种特殊的树结构,用于处理一些不交集的合并及查询问题。该结构中每个节点都有一个父节点,如果只有当前一个节点,那么该节点的父节点指向自己。这个结构中有两个重要的操作,分别是:Find:确定元素属于哪一个子集。它可以被用来确定两个元素是否属于同一子集。Union:将两个子集合并成同一个集合。实现class DisjointSet { // 初始化样本 constru...原创 2020-05-06 22:33:16 · 123 阅读 · 0 评论 -
笔记 前端需要了解的常见数据结构--Trie
概念在计算机科学,trie,又称前缀树或字典树,是一种有序树,用于保存关联数组,其中的键通常是字符串。简单点来说,这个结构的作用大多是为了方便搜索字符串,该树有以下几个特点:根节点代表空字符串,每个节点都有 N(假如搜索英文字符,就有 26 条) 条链接,每条链接代表一个字符节点不存储字符,只有路径才存储,这点和其他的树结构不同从根节点开始到任意一个节点,将沿途经过的字符连接起来就是该...原创 2020-05-06 22:31:21 · 130 阅读 · 0 评论 -
笔记 前端需要了解的常见数据结构--AVL 树
概念二分搜索树实际在业务中是受到限制的,因为并不是严格的 O(logN),在极端情况下会退化成链表,比如加入一组升序的数字就会造成这种情况。AVL 树改进了二分搜索树,在 AVL 树中任意节点的左右子树的高度差都不大于 1,这样保证了时间复杂度是严格的 O(logN)。基于此,对 AVL 树增加或删除节点时可能需要旋转树来达到高度的平衡。实现因为 AVL 树是改进了二分搜索树,所以部分代码...原创 2020-05-06 22:28:16 · 126 阅读 · 0 评论 -
笔记 前端需要了解的常见数据结构--树
二叉树树拥有很多种结构,二叉树是树中最常用的结构,同时也是一个天然的递归结构。二叉树拥有一个根节点,每个节点至多拥有两个子节点,分别为:左节点和右节点。树的最底部节点称之为叶节点,当一颗树的叶数量数量为满时,该树可以称之为满二叉树。二分搜索树二分搜索树也是二叉树,拥有二叉树的特性。但是区别在于二分搜索树每个节点的值都比他的左子树的值大,比右子树的值小。实现二分搜索树class Node...原创 2020-05-06 22:22:07 · 245 阅读 · 0 评论 -
笔记 前端需要了解的常见数据结构--链表
概念链表是一个线性结构,同时也是一个天然的递归结构。链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。但是链表失去了数组随机读取的优点,同时链表由于增加了结点的指针域,空间开销比较大。单向链表class Node { constructor(v, next) { this.value = v this.next = next }}class LinkLi...原创 2020-05-06 22:08:50 · 146 阅读 · 0 评论 -
笔记 前端需要了解的常见数据结构--队列
概念队列是一个线性结构,特点是在某一端添加数据,在另一端删除数据,遵循先进先出的原则。实现这里会讲解两种实现队列的方式,分别是单链队列和循环队列。单链队列class Queue { constructor() { this.queue = [] } enQueue(item) { this.queue.push(item) } deQueue() {...原创 2020-05-06 22:01:25 · 188 阅读 · 0 评论 -
笔记 前端需要了解的常见数据结构--栈
概念栈是一个线性结构,在计算机中是一个相当常见的数据结构。栈的特点是只能在某一端添加或删除数据,遵循先进后出的原则。实现每种数据结构都可以用很多种方式来实现,其实可以把栈看成是数组的一个子集,所以这里使用数组来实现。class Stack { constructor() { this.stack = [] } push(item) { this.stack.p...原创 2020-05-06 21:55:50 · 127 阅读 · 0 评论