综合 / 阅读 · 2026-10-18 16:36 · 2 阅读 · 0 赞
GitHub 近 20 万星:用 JavaScript 刷透数据结构与算法
javascript-algorithms 是 GitHub 上近 20 万 star 的算法仓库,用 JavaScript 实现常见数据结构与算法,每个都有详细 README 和示意图,适合学习和面试准备。
前几天跟一个做前端的朋友聊天,他又在吐槽:LeetCode 刷到怀疑人生,看那些 C++、Java 写的题解,头都大。明明平时写业务代码用不上什么高深算法,可一面试,排序、二叉树、动态规划全都来了。
我直接把一个 GitHub 链接甩给他。他看完沉默了半分钟,回了句:“这玩意儿要是早几年发现,我算法课也不至于挂科。”
说的就是 javascript-algorithms,GitHub 上近 20 万 star 的算法与数据结构仓库,作者是大神 Oleksii Trekhleb。它霸榜 GitHub Trending 不是一次两次了,Hacker News 上也常年挂着它的讨论帖。
这项目到底牛在哪
市面上讲算法的资料不少,但大多有个毛病:要么全是数学公式,要么代码写得像天书。这个项目不一样,它每个算法、每个数据结构都有自己单独的 README,里面用大白话讲清楚思路,还附上维基百科、YouTube 视频的链接,方便你继续深挖。
更绝的是,README 里还配了作者手绘风格的示意图。比如链表长什么样、节点之间怎么指向,画得跟草稿纸上的笔记似的,一眼就看懂。
项目从 2018 年创建到现在,star 数一路涨到 196k+,fork 超过 3 万,还拿了 MIT 协议,随便用。它自己也明确说了:这仓库是用来学习和研究的,不是让你直接搬去生产环境的。这个态度就很真诚,不装。
里面都有啥硬货
内容多到夸张。我数了下,光数据结构就有 17 种:链表、双向链表、队列、栈、哈希表、堆、优先队列、字典树、二叉搜索树、AVL 树、红黑树、线段树、图、并查集、布隆过滤器、LRU 缓存……
算法部分更夸张,按主题分了十几类:
- 数学类:斐波那契、素数检测、欧几里得算法、快速幂、矩阵运算
- 排序类:冒泡、快排、归并、堆排、计数排序、桶排序、基数排序,一口气给你 10 种
- 搜索类:线性、二分、跳跃、插值搜索
- 图论类:Dijkstra、Bellman-Ford、Floyd、拓扑排序、最小生成树
- 字符串类:KMP、Rabin-Karp、正则匹配
- 机器学习类:k-NN、k-Means,甚至还有个叫 NanoNeuron 的小东西,用 7 个 JS 函数演示机器怎么“学习”
- 密码学、图像处理、遗传算法……全都有
它还按算法范式重新归了一遍类:暴力、贪心、分治、动态规划、回溯、分支限界。想学哪种思想,直接对号入座。
手把手教你跑起来
光看不练假把式,这个项目最牛的是能直接在本地跑起来玩。步骤我一步步写给你。
第一步,把代码拉下来
git clone https://github.com/trekhleb/javascript-algorithms.git
cd javascript-algorithms
第二步,装依赖
npm install
第三步,跑测试看看效果
npm test
这一下会把所有算法的单元测试全跑一遍,看着满屏的绿色通过,莫名爽。
想单独测某个?比如只想看链表:
npm test -- 'LinkedList'
第四步,开个“游乐场”自己折腾
项目里有个专门的 playground 文件:./src/playground/playground.js。你可以在里面随便写代码,然后跑:
npm test -- 'playground'
比如你往 playground.js 里粘一段快排,马上就能看到结果对不对。
几个小提醒
- Node 版本要 16 或以上,低了跑不起来
- 如果你装了 nvm,直接在项目根目录敲
nvm use,它会自动切到对的版本 - 万一 lint 或测试抽风,别慌,删掉 node_modules 重装试试:
rm -rf ./node_modules
npm i
怎么学才最划算
如果你是零基础,建议按“数据结构 → 简单排序 → 二分搜索 → DFS/BFS”的顺序来,别一上来就啃动态规划,容易劝退。
如果是面试冲刺,重点刷快排、二叉树遍历、BFS/DFS、背包问题、全排列这些。方法是:先看一遍仓库里的“标准答案”,然后合上电脑自己手写,写不出的再回去对。重复三遍,基本就刻进脑子里了。
另外它 README 里那张 Big O 复杂度的图,建议存手机相册里,面试前扫一眼,心里就有底了。
写在最后
这个项目能火这么多年,靠的不是代码多高级,而是把复杂的东西讲明白了。作者还在持续更新,最近还在折腾 AI 相关的新玩具。算法这东西,说难也难,说简单也简单——找对资料,剩下的就是动手。
GitHub 地址:https://github.com/trekhleb/javascript-algorithms