trekhleb /javascript-algorithms
📝 Algorithms and data structures implemented in JavaScript with explanations and links to further readings
★ 196,724⑂ 30,984👁 4,177⑃ 896● 385▤ 0◈ 0
TA的项目
196,724
stars
+2+4+59
30,984
forks
4,177
watchers
896
prs
385
issues
0
releases
0
discussions
README
JavaScript 算法与数据结构 本仓库包含了多种基于 JavaScript 的算法与数据结构。 每种算法和数据结构都有自己的 README,包含相关说明和链接,以便进一步阅读 (还有 YouTube 视频) 。 _Read this in other languages:_ _English_, _繁體中文_, _한국어_, _日本語_, _Polski_, _Français_, _Español_, _Português_, _Русский_, _Türk_, _Italiana_, _Bahasa Indonesia_, _Українська_, _Arabic_, _Tiếng Việt_, _Deutsch_, _Uzbek_ _עברית_ 数据结构 数据结构是在计算机中组织和存储数据的一种特殊方式,使得数据可以高效地被访问和修改。更确切地说,数据结构是数据值的集合,表示数据之间的关系,也包括了作用在数据上的函数或操作。 B - 初学者, A - 进阶 B 链表 B 双向链表 B 队列 B 栈 B 哈希表(散列) B 堆 - 最大堆 & 最小堆 B 优先队列 A 字典树 A 树 A 二叉查找树 A AVL 树 A 红黑树 A 线段树 - 使用 最小/最大/总和 范围查询示例 A 树状数组 (二叉索引树) A 图 (有向图与无向图) A 并查集 A 布隆过滤器 算法 算法是如何解决一类问题的明确规范。算法是一组精确定义操作序列的规则。 B - 初学者, A - 进阶 算法主题 数学 B 位运算 - set/get/update/clear 位、乘以/除以二进制位 、变负等 B 阶乘 B 斐波那契数 - 经典 和 闭式 版本 B 素数检测 (排除法) B 欧几里得算法 - 计算最大公约数 (GCD) B 最小公倍数 (LCM) B 素数筛 - 查找任意给定范围内的所有素数 B 判断 2 次方数 - 检查数字是否为 2 的幂 (原生和按位算法) B 杨辉三角形 B 复数 - 复数及其基本运算 B 弧度和角 - 弧度与角的相互转换 B 快速算次方 A 整数拆分 A 割圆术 - 基于 N-gons 的近似 π 计算 A 离散傅里叶变换 - 把时间信号解析成构成它的频率 集合 B 笛卡尔积 - 多集合结果 A 洗牌算法 - 随机置换有限序列 A 幂集 - 该集合的所有子集 A 排列 (有/无重复) A 组合 (有/无重复) A 最长公共子序列 (LCS) A 最长递增子序列 A 最短公共父序列 (SCS) A 背包问题 - 0/1 和 无边界 问题 A 最大子数列问题 - BF 算法 和 动态规划 A 组合求和 - 查找形成特定总和的所有组合 字符串 B 汉明距离 - 符号不同的位置数 A 莱温斯坦距离 - 两个序列之间的最小编辑距离 A Knuth–Morris–Pratt 算法 KMP 算法 - 子串搜索 (模式匹配) A 字符串快速查找 - 子串搜索 (模式匹配) A Rabin Karp 算法 - 子串搜索 A 最长公共子串 A 正则表达式匹配 搜索 B 线性搜索 B 跳转搜索/块搜索 - 搜索有序数组 B 二分查找 - 搜索有序数组 B 插值搜索 - 搜索均匀分布的有序数组 排序 B 冒泡排序 B 选择排序 B 插入排序 B 堆排序 B 归并排序 B 快速排序 - in-place (原地) 和 non-in-place 版本 B 希尔排序 B 计数排序 B 基数排序 链表 - B 正向遍历 - B 反向遍历 树 B 深度优先搜索 (DFS) B 广度优先搜索 (BFS) 图 B 深度优先搜索 (DFS) B 广度优先搜索 (BFS) B 克鲁斯克尔演算法 - 寻找加权无向图的最小生成树 (MST) A 戴克斯特拉算法 - 找到图中所有顶点的最短路径 A 贝尔曼-福特算法 - 找到图中所有顶点的最短路径 A 弗洛伊德算法 - 找到所有顶点对 之间的最短路径 A 判圈算法 - 对于有向图和无向图 (基于 DFS 和不相交集的版本) A 普林演算法 - 寻找加权无向图的最小生成树 (MST) A 拓扑排序 - DFS 方法 A 关节点 - Tarjan 算法 (基于 DFS) A 桥 - 基于 DFS 的算法 A 欧拉回径与一笔画问题 - Fleury 的算法 - 一次访问每个边 A 哈密顿图 - 恰好访问每个顶点一次 A 强连通分量 - Kosaraju 算法 A 旅行推销员问题 - 尽可能以最短的路线访问每个城市并返回原始城市 加密 B 多项式 hash - 基于多项式的 rolling hash 函数 机器学习 B NanoNeuron -7个简单的JS函数,说明机器如何实际学习(向前/向后传播) 未分类 B 汉诺塔 B 旋转矩阵 - 原地算法 B 跳跃游戏 - 回溯,、动态编程 (自上而下+自下而上) 和贪婪的例子 B 独特(唯一) 路径 - 回溯、动态编程和基于 Pascal 三角形的例子 B 雨水收集 - 诱捕雨水问题 (动态编程和暴力版本) B 递归楼梯 - 计算有共有多少种方法可以到达顶层 (4 种解题方案) A 八皇后问题 A 骑士巡逻 算法范式 算法范式是一种通用方法,基于一类算法的设计。这是比算法更高的抽象,就像算法是比计算机程序更高的抽象。 BF 算法 - 查找/搜索 所有可能性并选择最佳解决方案 B 线性搜索 B 雨水收集 - 诱导雨水问题 B 递归楼梯 - 计算有共有多少种方法可以到达顶层 (4 种解题方案) A 最大子数列 A 旅行推销员问题 - 尽可能以最短的路线访问每个城市并返回原始城市 A 离散傅里叶变换 - 把时间信号解析成构成它的频率 贪心法 - 在当前选择最佳选项,不考虑以后情况 B 跳跃游戏 A 背包问题 A 戴克斯特拉算法 - 找到所有图顶点的最短路径 A 普里姆算法 - 寻找加权无向图的最小生成树 (MST) A 克鲁斯卡尔算法 - 寻找加权无向图的最小生成树 (MST) 分治法 - 将问题分成较小的部分,然后解决这些部分 B 二分查找 B 汉诺塔 B 杨辉三角形 B 欧几里得算法 - 计算最大公约数 (GCD) B 归并排序 B 快速排序 B 树深度优先搜索 (DFS) B 图深度优先搜索 (DFS) B 跳跃游戏 B 快速算次方
Top issues
#1008Factorial of a negative number does not exist18 comments · 2023-03-17#89Translate to russian13 comments · 2018-07-03#990The "i" of the for loop can be initialized with the value 210 comments · 2023-01-31#568Linear Search Fix10 comments · 2020-10-17#339Cartesian product with an empty set should be an empty set9 comments · 2019-04-15#196Suggestion: ship production ready build to npm9 comments · 2018-09-02#12A* algorithm?9 comments · 2018-05-24#960Eu realmente não entendi7 comments · 2022-11-17
News & coverage (13)
Hacker NewsAlgorithms and Data Structures Explained and Implemented in JavaScript▲ 483 · 43 comments · 2018-05-23Hacker NewsClassic Algorithms Implemented in JavaScript▲ 249 · 34 comments · 2018-07-20Hacker NewsJavaScript-algorithms: Algorithms and data structures implemented in JavaScript▲ 183 · 76 comments · 2023-04-07Hacker NewsJavaScript Algorithms and Data Structures (2018)▲ 115 · 30 comments · 2021-10-20Hacker NewsBinary representation of floating-point numbers▲ 49 · 18 comments · 2021-07-24Hacker NewsJavaScript Algorithms and Data Structures (examples and explanations of each)▲ 48 · 5 comments · 2021-02-02Hacker NewsLots of algorithms and data structures implemented in JavaScript▲ 5 · 0 comments · 2018-05-25Hacker NewsJavaScript Algorithms and Data Structures▲ 3 · 0 comments · 2019-12-13Hostinger15 Most Popular GitHub Repos for Developers in 20262026-09-18analyticsindiamag.comBest GitHub Learning Repositories for Developers2022-03-15