一、引言
背景介绍
在计算机科学与工程领域,算法是解决问题的核心工具。无论是数据处理、人工智能、图形渲染还是网络通信,算法都扮演着至关重要的角色。掌握算法不仅是提升编程能力的关键,更是进入大厂、参与高难度项目和构建高质量软件系统的基础。
学习路径规划
- 核心算法分类详解
- 实战编码练习方法
- 工具与资源推荐
- 高效刷题技巧
- 常见误区与应对策略
二、学习路径规划
2.1 初级阶段(基础夯实)
目标:
- 掌握基本的数据结构(数组、链表、栈、队列、哈希表)
- 理解时间复杂度与空间复杂度分析
- 学会使用 C++ STL 中常用容器(vector、map、set、queue、stack)
学习内容:
| 主题 | 学习内容 | 时间复杂度案例 | STL 容器对应实现 |
|---|---|---|---|
| 数据结构 | 数组 | O(1) 随机访问 | std::vector |
| 链表 | O(n) 插入/删除 | std::list/std::forward_list | |
| 栈 | O(1) 压栈/弹栈 | std::stack | |
| 队列 | O(1) 队尾插入/队首删除 | std::queue | |
| 哈希表 | O(1) 平均查询 | std::unordered_map | |
| 时间复杂度 | O(1) 常数时间 | 数组索引访问 | |
| O(log n) 对数时间 | 二分查找 | std::map/std::set | |
| O(n) 线性时间 | 线性遍历 | ||
| O(n²) 平方时间 | 嵌套循环 | ||
| O(n log n) 线性对数时间 | 快速排序 | std::priority_queue |
关键说明
- STL 容器特性:
- std::deque 支持 O(1) 随机访问,兼具队列和栈的特性
- std::map 和 std::set 基于红黑树实现,操作复杂度为 O(log n)
- std::unordered_map 哈希表实现,平均 O(1) 但最差 O(n)
- 复杂度对比:
- O(n log n) 常见于分治算法(如归并排序)
- O(n²) 多出现于暴力算法(如冒泡排序)
vector map:
#include <iostream>
{
std::vector<> nums = {, , , , };
std::map<std::string, > scores;
scores[] = ;
scores[] = ;
( num : nums) {
std::cout << num << ;
}
std::cout << std::endl;
( & pair : scores) {
std::cout << pair.first << << pair.second << std::endl;
}
;
}


