CodeRoadMap
路线图学习路径文章题库资源社区

浏览

首页路线图学习路径知识库题库文章资源社区我的学习
CodeRoadMap

中文编程学习导航:路线图、讲义与题库,进度可同步。

路线图学习路径文章题库社区

© 2026 CodeRoadMap

津ICP备2026012044号-1|coderoadmap@126.com
首页/C/C++ 面试知识总结/算法

课程目录

  1. 01C/C++ 语言基础
  2. 02Effective C++ 条款
  3. 03STL 标准库
  4. 04数据结构
  5. 05算法
  6. 06经典问题
  7. 07操作系统
  8. 08计算机网络
  9. 09网络编程
  10. 10数据库
  11. 11设计模式
  12. 12链接、装载与库
  13. 13推荐书籍
  14. 14C/C++ 发展方向
  15. 15复习刷题网站
  16. 16面试题目与经验
第 05 课2 小时

算法

排序、查找、动态规划、贪心等高频算法。

课程内容

算法

排序

排序算法平均时间复杂度最差时间复杂度空间复杂度数据对象稳定性
冒泡排序O(n2)O(n2)O(1)稳定
选择排序O(n2)O(n2)O(1)数组不稳定、链表稳定
插入排序O(n2)O(n2)O(1)稳定
快速排序O(n*log2n)O(n2)O(log2n)不稳定
堆排序O(n*log2n)O(n*log2n)O(1)不稳定
归并排序O(n*log2n)O(n*log2n)O(n)稳定
希尔排序O(n*log2n)O(n)
2
O(1)
不稳定
计数排序O(n+m)O(n+m)O(n+m)稳定
桶排序O(n)O(n)O(m)稳定
基数排序O(k*n)O(n2)稳定
  • 均按从小到大排列
  • k:代表数值中的 “数位” 个数
  • n:代表数据规模
  • m:代表数据的最大值减最小值
  • 来自:wikipedia . 排序算法

查找

查找算法平均时间复杂度空间复杂度查找条件
顺序查找O(n)O(1)无序或有序
二分查找(折半查找)O(log2n)O(1)有序
插值查找O(log2(log2n))O(1)有序
斐波那契查找O(log2n)O(1)有序
哈希查找O(1)O(n)无序或有序
二叉查找树(二叉搜索树查找)O(log2n)
红黑树O(log2n)
2-3树O(log2n - log3n)
B树/B+树O(log2n)

图搜索算法

图搜索算法数据结构遍历时间复杂度空间复杂度
BFS广度优先搜索邻接矩阵
邻接链表
O(|v|2)
O(|v|+|E|)
O(|v|2)
O(|v|+|E|)
DFS深度优先搜索邻接矩阵
邻接链表
O(|v|2)
O(|v|+|E|)
O(|v|2)
O(|v|+|E|)

其他算法

算法思想应用
分治法把一个复杂的问题分成两个或更多的相同或相似的子问题,直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并循环赛日程安排问题、排序算法(快速排序、归并排序)
动态规划通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法,适用于有重叠子问题和最优子结构性质的问题背包问题、斐波那契数列
贪心法一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或最优的算法旅行推销员问题(最短路径问题)、最小生成树、哈夫曼编码
← 上一课数据结构下一课 →经典问题