AX 爱鲜报

综合 / 阅读 · 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

标签 JavaScript 算法 数据结构 面试 GitHub

评论

登录后才可评论

0 条评论

  • 暂无评论,来写第一条吧。