# javascript-general-studies **Repository Path**: yzsunlei/javascript-general-studies ## Basic Information - **Project Name**: javascript-general-studies - **Description**: 《JavaScript编程通识》系列,你必须知道的编程基础。JavaScript数据结构、JavaScript基本算法、JavaScript设计模式等 - **Primary Language**: JavaScript - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-11-17 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 《JavaScript编程通识》 你必须知道的编程知识。JavaScript数据结构、JavaScript基本算法、JavaScript设计模式等 ## 一、javascript数据结构 * **列表**: [示例](https://github.com/yzsunlei/javascript-data-structure/blob/master/01.list.js) 一个存储元素的线性集合(collection),元素可以通过索引来任意存取,索引通常是数字,用来计算元素之间存储位置的偏移量。 * **队列**: [示例](https://github.com/yzsunlei/javascript-data-structure/blob/master/02.queue.js) 用于存储按顺序排列的数据,先进先出。 * **栈**: [示例](https://github.com/yzsunlei/javascript-data-structure/blob/master/03.stack.js) 一种高效的数据结构,数据只能在栈顶添加或删除,先进后出。 * **链表**: [示例](https://github.com/yzsunlei/javascript-data-structure/blob/master/04.linkedlist.js) 由一组节点组成的集合,每个节点都使用一个对象的引用指向它的后继。 * **字典**:[示例](https://github.com/yzsunlei/javascript-data-structure/blob/master/05.dictionary.js) 以键-值对形式存储数据的数据结构。 * **散列表**:[示例](https://github.com/yzsunlei/javascript-data-structure/blob/master/06.hashtable.js) 散列是一种常用的数据存储技术,散列后的数据可以快速地插入或取用。 * **集合**:[示例](https://github.com/yzsunlei/javascript-data-structure/blob/master/07.set.js) 一种包含不同元素的数据结构。集合中的成员是无序的,集合中不允许相同成员存在。 * **树**:[示例](https://github.com/yzsunlei/javascript-data-structure/blob/master/08.bst.js) 一种非线性的数据结构,以分层的方式存储数据,被用来存储具有层级关系的数据。 * **图**:[示例](https://github.com/yzsunlei/javascript-data-structure/blob/master/09.graph.js) 由边的集合及顶点的集合组成。 ## 二、javascript基本算法 ### 基础算法 * 阶乘 * 斐波那契数 * 素数检测 * 最大公约数算法(GCD) * 最小公倍数 (LCM) * 杨辉三角形 * 整数拆分 * 字符串快速查找 * 最长公共子串 ### 排序算法 * 选择排序 Selection Sort * 插入排序 Insertion Sort * 希尔排序 Shell Sort * 归并排序 Merge Sort * 堆排序 Heap Sort * 快速排序 Quick Sort ### 查找/搜索算法 * 线性查找 * 二分查找 * 跳转查找 * 插值查找 * [数]深度优先搜索 * [数]广度优先搜索 * [图]深度优先搜索 * [图]广度优先搜索 ### 趣味算法 * 汉诺塔 * 旋转矩阵 * 跳跃游戏 * 独特路径 * 雨水收集 * 递归楼梯 * 八皇后问题 * 骑士巡逻 ### [附]常见的算法范式: * 暴力破解法 * 分治法 * 动态规划法 * 贪心算法 * 回溯法 * 分支限界法 ### 三、javascript设计模式: * 创建型设计模式: 1、简单工厂模式 2、工厂方法模式 3、抽象工厂模式 4、建造者模式 5、原型模式 6、单例模式 * 结构型设计模式: 7、外观模式 8、适配器模式 9、代理模式 10、装饰者模式 11、桥接模式 12、组合模式 13、享元模式 * 行为型设计模式: 14、模板方法模式 15、观察者模式 16、状态模式 17、策略模式 18、职责链模式 19、命令模式 20、访问者模式 21、中介者模式 22、备忘录模式 23、迭代器模式 24、解释器模式 * 技巧型设计模式: 25、链模式 26、委托模式 27、数据访问对象模式 28、节流模式 29、简单模板模式 30、惰性模式 31、参与者模式 32、等待者模式 * 架构型设计模式: 33、同步模块模式 34、异步模块模式 35、Widget模式 36、MVC模式 37、MVP模式 38、MVVM模式