本指南为初学者提供一条清晰的学习路径,帮你系统地掌握编程核心知识,逐步提升能力。
通过本仓库的学习,你将:
- 理解编程的本质(数据结构 + 算法)
- 掌握常见数据结构的原理与实现
- 学习经典算法思想与应用
- 能用多种编程语言实现算法
- 具备独立分析和解决问题的能力
目标:建立编程的整体认知,了解学习方向
内容:
-
什么是编程 - 理解编程的核心概念
- 编程 = 数据结构 + 算法
- 数据组织方式和逻辑处理过程
-
推荐学习的编程语言 - 选择合适的入门语言
- 根据兴趣和目标选择语言
- 推荐:Python(易上手)、JavaScript(应用广)、Java(企业级)
-
算法思想简介 - 了解常见的 10 大算法思想
- 贪心、分治、动态规划、回溯等
- 掌握思想,应用无穷
任务:
- 完读 3 篇基础文档
- 选择 1-2 门入门语言
- 搭建好开发环境
目标:掌握编程语言基础,能写出简单程序
内容:
- 安装编程环境和 IDE(参考 环境搭建指南)
- 学习语言基础:
- 数据类型、变量、常量
- 运算符和表达式
- 流程控制(if-else、for、while)
- 函数/方法定义和调用
- 基本数组操作
练习:
- 编写 10-15 个小程序(如:计算器、猜数字游戏、简单排序等)
- 通过大量敲代码来熟悉语言语法
- 学会使用调试器来追踪程序执行
学习建议:
"编程像学说话,需要大量重复练习。不要死记语法,而是在实践中逐渐理解。"
目标:深入理解常见数据结构,会在代码中灵活应用
主要内容:
在 01-data-structures/ 目录中系统学习:
| 数据结构 | 学习重点 | 时间 |
|---|---|---|
| Array (数组) | 内存连续、随机访问、顺序插入删除 | 3-5 天 |
| Linked List (链表) | 指针操作、插删效率高、访问低效 | 3-5 天 |
| Stack (栈) | LIFO 原理、括号匹配、表达式求值 | 2-3 天 |
| Queue (队列) | FIFO 原理、BFS 搜索、任务队列 | 2-3 天 |
| Tree (树) | 二叉树、遍历、搜索、平衡树 | 1-2 周 |
| Hash (散列) | 哈希函数、冲突解决、HashMap 实现 | 3-5 天 |
| Graph (图) | 邻接表、DFS/BFS、最短路径 | 1-2 周 |
学习方法:
- 理解数据结构的定义和特点
- 用你选择的编程语言实现一遍
- 分析其时间和空间复杂度
- 在实际问题中应用
自检清单:
- 能手写链表、栈、队列的基本操作
- 理解二叉树的三种遍历方式
- 能解释 HashMap 的冲突处理
- 能用 DFS/BFS 解决图的基本问题
目标:学习常见算法,掌握解决问题的方法
关键算法(按优先级):
排序算法(1-2 周)- 来自 sorting/
- 快速排序、归并排序(高效排序)
- 冒泡、插入、选择(基础排序)
- 堆排序、计数排序(特殊场景)
搜索与查找(3-5 天)
- 二分查找:O(log n) 的高效查找
- BFS/DFS:图和树的遍历搜索
- KMP 搜索:字符串匹配
经典问题(1-2 周)
- 动态规划:背包问题、最长公共子序列
- 回溯算法:全排列、N 皇后
- 贪心算法:区间调度、活动选择
学习路线:
基础排序 → 高效排序 → 查找算法 → 动态规划 → 高级算法
目标:能独立分析问题,选择合适的数据结构和算法求解
学习内容:
04-problem-sets/- 精选题目,从简到难06-examples/- 实际应用案例- 编程竞赛题或 LeetCode
项目实践:
- 参与
practice-projects/中的项目 - 实现一个小型应用(如简单的数据库、文件压缩等)
- 优化程序的时空复杂度
- 就业方向:重点是数据结构、常见算法、系统设计
- 竞赛方向:深入学习算法思想,掌握高级技巧
- 学术研究:理解算法的数学原理
- 不要贪快:深入理解比快速扫过更重要
- 坚持重复:同一个知识点至少学 3 遍
- 定期复习:费曼学习法,用自己的话讲出来
- 第一遍用一门语言学透彻
- 第二遍用另一门语言重新实现
- 理解语言特性的差异
- 不仅要会写代码,更要理解算法思想
- 分析时间复杂度、空间复杂度
- 思考是否还有更优的解法
┌─────────────────────────┐
│ 编程问题 │
└────────┬────────────────┘
│
┌────▼─────┐
│ 需要什么? │
└────┬─────┘
│
┌────▼──────────────┐
│ 数据结构 + 算法 │
└────┬───────────────┘
│
┌────▼──────────────┐
│ 实现 + 优化 │
└────┬───────────────┘
│
└────▼──────────────┘
解决问题
| 阶段 | 目标 | 预计时间 | 完成 |
|---|---|---|---|
| 第一阶段 | 基础认知 | 1-2 周 | [ ] |
| 第二阶段 | 语言基础 | 2-3 周 | [ ] |
| 第三阶段 | 数据结构 | 3-4 周 | [ ] |
| 第四阶段 | 经典算法 | 4-6 周 | [ ] |
| 第五阶段 | 综合应用 | 持续 | [ ] |
Q: 我应该先学数据结构还是算法?
A: 两者紧密相关。通常的学习顺序是:先掌握基本的编程语言 → 学习常见数据结构 → 然后学习构建在这些数据结构上的算法。但不要等完全掌握了再开始下一阶段,可以边学边练。
Q: 学这么多有什么用?
A:
- 面试:大多数技术面试都考察数据结构和算法
- 工程:设计高效程序离不开算法知识
- 思维:训练逻辑思维和问题分析能力
Q: 多久能学成?
A: 根据目标不同:
- 理解基础概念:3-4 个月
- 能独立解决中等难度问题:6-12 个月
- 精通常见算法:1-2 年
- 从 什么是编程 开始阅读
- 选择一门编程语言(推荐 Python 或 JavaScript)
- 参考 环境搭建指南 配置开发环境
- 进入
01-data-structures开始动手实践 - 遇到问题参考 常见问题解答
记住:编程的本质不是记住代码,而是理解问题、设计方案、优化实现。坚持学习,你一定能掌握! 💪