😰 为什么要做这个项目?
作为一个前端开发者,我也曾经被算法折磨得死去活来:
- 面试时被问到快速排序,脑子一片空白
- LeetCode刷了50道题,遇到新题还是不会
- 买了一堆算法书,看了忘、忘了看
- 知道算法重要,但不知道从何学起
我相信很多人和我一样。
所以我决定做一个真正适合初学者的算法教程,用费曼学习法,30天从0掌握算法。
🎯 项目亮点
1. 系统化学习路径
第1周:基础数据结构(数组、链表、栈、队列、递归)
第2周:高级数据结构(树、堆、哈希表、图)
第3周:排序算法(6种经典排序深度解析)
第4周:高级算法(二分查找、贪心、动态规划、LeetCode实战)
不是零散的知识点,而是循序渐进的系统课程。
2. 120+配套资源
每天不只是看文章,还有:
- ✅ 学习检查清单 - 明确今天学什么
- ✅ 练习题 - 巩固知识(约300道题)
- ✅ 答案详解 - 详细解析,不是简单给答案
- ✅ 思维导图 - 知识框架一目了然
总计约10万字内容,40,000+行!
3. 费曼学习法
每章都有"费曼输出"环节:
"如果你不能简单地解释它,你就没有真正理解它。" — 费曼
逼着你真正理解,而不是死记硬背。
4. 完整代码实现
所有算法都有JavaScript实现:
- 代码注释详细,小白也能看懂
- 包含测试用例,可以直接运行
- 性能对比,理解优化技巧
5. 游戏化学习
- 勾选任务清单,完成有成就感
- 打分评级系统,知道自己水平
- 坚持30天,遇见更好的自己
📚 部分内容展示
Day 19: 快速排序详解
不仅讲怎么写,还讲为什么这么写:
function quickSort(arr) {
function partition(low, high) {
const pivot = arr[high];
let i = low;
for (let j = low; j < high; j++) {
if (arr[j] < pivot) {
[arr[i], arr[j]] = [arr[j], arr[i]];
i++;
}
}
[arr[i], arr[high]] = [arr[high], arr[i]];
return i;
}
function sort(low, high) {
if (low < high) {
const pivotIndex = partition(low, high);
sort(low, pivotIndex - 1);
sort(pivotIndex + 1, high);
}
}
sort(0, arr.length - 1);
return arr;
}
还有配套的资源目录:
配套资源/Day19-学习检查清单.md
配套资源/Day19-练习题.md
配套资源/Day19-答案详解.md
配套资源/Day19-思维导图.md
Day 24-26: 动态规划三部曲
从入门到高级,循序渐进:
- Day 24: 动态规划入门(斐波那契、爬楼梯)
- Day 25: 动态规划进阶(背包问题、最长子序列)
- Day 26: 动态规划高级(区间DP、状态压缩)
Day 27-29: LeetCode实战
直接上真题,检验学习成果。
💡 适合谁学?
✅ 强烈推荐
- 编程初学者,想打好基础
- 准备面试的求职者
- 想转行做开发的非科班同学
- 工作1-3年,想提升算法能力的开发者
- 喜欢系统化学习的人
⚠️ 不太适合
- 已经是算法高手(可以看后面的高级部分)
- 只想速成,不愿意花30天时间
- 不喜欢动手写代码
🚀 如何开始?
方式1:在线阅读(推荐)
直接在GitHub上浏览: 👉 github.com/Lee985-cmd/…
方式2:克隆到本地
git clone https://github.com/Lee985-cmd/algorithm-30days
cd algorithm-30days
code .
📊 学习效果
| 维度 | 传统学习 | 本教程 |
|---|---|---|
| 学习时间 | 3-6个月 | 30天 |
| 掌握程度 | 30-50% | 80-90% |
| 面试通过率 | 低 | 高 |
| 学习方式 | 零散 | 系统化 |
| 实践机会 | 少 | 多(120+练习) |
🙏 写在最后
这个项目完全是用爱发电做的,没有任何收费内容。
我希望它能帮助到更多想学算法但无从下手的人。
如果你觉得这个项目有用:
- ⭐ Star支持一下
- 🔄 Fork分享给朋友
- 💬 提Issue或Discussion
- 📢 在社交媒体推广
你的支持是我持续更新的动力!
GitHub地址: github.com/Lee985-cmd/…
有任何问题欢迎提Issue,我会尽快回复!
📝 文章标签
#算法 #JavaScript #前端 #开源 #数据结构 #LeetCode #面试 #学习 #费曼学习法 #编程