![](https://img-blog.csdnimg.cn/20190918140213434.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
js数据结构与算法
文章平均质量分 86
学习一下关于JavaScript的数据结构与算法
友人A ㅤ
人的进步在于不断学习
展开
-
JavaScript数据结构与算法 - 搜索算法
1. 顺序搜索顺序或线性搜索是最基本的搜索算法。思想:将每一个数据结构中的元素和要找的元素做比较。顺序搜索是最低效的一种搜索算法。原创 2021-10-03 21:04:52 · 303 阅读 · 4 评论 -
JavaScript数据结构与算法 - 排序算法
1. 冒泡排序冒泡排序比较所有相邻的两个项,如果第一个比第二个大,则交换它们。元素项向上移动至正确的顺序,就好像气泡升至表面一样。但是,从运行时间的角度来看,冒泡排序是最差的一个。const Compare = { LESS_THAN = -1, BIGGER_THAN = 1, EQUALS = 0};function defaultCompare(a, b) { if (a === b) { return Compare.EQUALS;原创 2021-10-03 21:04:31 · 123 阅读 · 1 评论 -
JavaScript数据结构与算法 - 图
1. 图的介绍图是一组由边连接的节点(或顶点)任何二元关系都可以用图来表示任何社交网络,例如Facebook、Twitter和Google+,都可以用图来表示;还可以使用图来表示道路、航班以及通信等概念:一个图G=(V, E)由以下元素组成:V:一组顶点E:一组边,连接V中的顶点...原创 2021-10-03 21:04:16 · 325 阅读 · 0 评论 -
JavaScript数据结构与算法 - 二叉堆和堆排序
1. 二叉堆二叉堆是一种特殊的二叉树,是一棵完全二叉树结构特性: 树的每一层都有左侧和右侧子节点(除了最后一层的叶节点),并且最后一层的叶节点尽可能都是左侧子节点二叉堆分最小堆和最大堆最小堆:允许快速导出树的最小值堆特性:所有节点都小于等于每个它的子节点最大堆:允许快速导出树的最大值堆特性:所有节点都大于等于每个它的子节点二叉堆能高效、快速地找出最大值和最小值,常被应用于优先队列也常被用于堆排序算法一些合法和不合法的堆:注意:二叉堆是二叉树,但不一定是原创 2021-05-12 22:04:46 · 587 阅读 · 17 评论 -
JavaScript数据结构与算法 - 树
1. 树数据结构树是一种分层数据的抽象模型树是一种非顺序的数据结构树对于存储需要快速查找的数据非常有用常见例子:如公司的组织架构图树结构:2. 二叉树和二叉搜索树二叉树: 只能有左右两个子节点二叉搜索树: 二叉树的一种,但是只允许在左侧节点存储(比父节点)小的值,在右侧节点存储(比父节点)大的值(如上面的图)2.1 创建BinarySearchTree类创建Node类来表示二叉搜索树中的每个节点:class Node { constructor(key) {原创 2021-05-06 23:06:55 · 2429 阅读 · 25 评论 -
JavaScript数据结构与算法 - 递归
1. 递归递归是一种解决问题的方法,从解决问题的各小部分开始,直到解决最大的问题,涉及函数调用自身。能使操作树和图数据结构更简单。直接调用自身的函数或方法:function recursiveFunction(someParam) { recursiveFunction(someParam);}间接调用自身的函数:function recursiveFunction1(someParam) { recursiveFunction2(someParam);}functio原创 2021-05-03 22:13:52 · 369 阅读 · 5 评论 -
JavaScript数据结构与算法 - 散列表
1. 概念散列表:散列表是字典的一种实现,所以可以用作关联数组。散列表可以用来保存键和对表中记录的引用。如在关系型数据库中创建一个新的表时,同时创建一个索引可以更快查询到记录的key可以使用散列表来表示对象。如JavaScript语言内部就是使用散列表来表示每个对象。散列算法:尽可能快地在数据结构中找到一个值。不需要迭代整个数据结构来找到值。如果使用散列函数,就知道值的具体位置,因此能够快速检索到该值。散列函数:散列函数的作用是给定一个键值,然后返回值在表中的地址。散列函数——原创 2021-05-03 22:13:38 · 637 阅读 · 1 评论 -
JavaScript数据结构与算法 - 字典
1. 什么是字典类似于集合,字典用来存储唯一值在字典中,存储的是 [键,值] 对,其中键名是用来查询特定元素的字典也称映射、符号表或关联数组在计算机科学中,字典常用来保存对象的引用地址字典的键只能有一个值2. 字典的类和方法2.1 创建字典类字典中,键名最理想的情况是字符串,值可以是任何类型。但是JavaScript不是强类型的语言,所有需要将key转换为字符串。function defaultToString(item) { if (item === null) {原创 2021-04-28 23:20:20 · 1260 阅读 · 6 评论 -
JavaScript数据结构与算法 - 集合
1. 集合由一组无序且唯一的项组成空集:集合里没有任何元素2. 创建集合类class Set { constructor() { this.items = {}; }}这里使用对象来实现,但也可以使用数组。JavaScript对象不允许一个键指向俩个不同的属性,保证了集合里的元素都是唯一的。一些常用方法:add(element):向集合添加一个新元素delete(element):从集合移除一个元素has(element):如果元素在集合中,返原创 2021-04-28 23:20:13 · 807 阅读 · 3 评论 -
JavaScript数据结构与算法 - 链表
1. 链表介绍链表存储有序的元素集合链表中的元素在内存中并不连续放置每个元素由一个存储元素本身的节点和一个指向下一个元素的引用(也称指针或链接)组成与数组相比:链表在添加或移除时不需要移动其他元素链表使用需要指针在数组中可以直接访问任何位置的任何元素,而链表中想访问链表中间的任一元素,需要从表头开始迭代链表直到找到所需的元素2. 单链表2.1 创建链表// 作为默认的相等性比较函数function defaultEquals(a, b) { return a ===原创 2021-04-25 15:48:36 · 292 阅读 · 1 评论 -
JavaScript数据结构与算法 - 队列
1. 队列数据结构队列是遵循先进先出(FIFO,先来先服务)原则的一组有序的项队列在尾部添加新元素,从顶部移除元素1. 创建队列 class Queue { constructor() { this.count = 0; // 控制队列大小 this.lowestCount = 0; // 追踪第一个元素 this.items = {}; // 使用对象来存储元原创 2021-03-25 12:31:06 · 1003 阅读 · 1 评论 -
JavaScript数据结构与算法 - 栈
1. 栈数据结构栈是类似于数组的数据结构,在添加和删除元素时更为可控。遵从后进先出(LIFO)原则的有序组合。新添加或待删除的元素保存在栈顶。栈可被用在编程语言的编译器和内存中保存变量、方法调用等,也被用于浏览器历史记录(浏览器返回按钮)。1.1 创建一个基于数组的栈创建一个类来表示栈:class Stack { constructor() { this.items = []; // 可以选择数组来保存栈里的元素 }; // 方法}为栈声明一原创 2021-03-25 12:30:54 · 1012 阅读 · 3 评论 -
JavaScript数据结构与算法 - 数组
数组:最简单的内存数据结构存储一系列同一种数据类型的值注意: 虽然JavaScript中,可以在数组里保存不同类型的值,但是要避免此类做法1. 创建和初始化数组可以使用new关键字声明、创建和初始化一个数组// 使用new关键字简单声明并创建一个数组let arr = new Array(); // 创建一个指定长度的数组let arr1 = new Array(3);// 直接将数组元素传递给他的构造器let arr2 = new Array('hello', 'worl原创 2021-03-25 12:30:33 · 1018 阅读 · 0 评论