现在位置: 首页 > C 语言数据结构与算法 > 正文

参考资源

数据结构操作复杂度速查

数据结构插入删除查找遍历
数组O(n) 中间 / O(1) 末尾O(n) 中间 / O(1) 末尾O(1) 索引 / O(n) 值O(n)
单链表O(1) 头部 / O(n) 尾部O(1) 头部 / O(n) 指定O(n)O(n)
双向链表O(1)(已知位置)O(1)(已知位置)O(n)O(n)
O(1)O(1)
队列O(1)O(1)
优先队列(堆)O(log n)O(log n)
二叉树(BST)O(log n)~O(n)O(log n)~O(n)O(log n)~O(n)O(n)
哈希表O(1) 平均O(1) 平均O(1) 平均
O(log n)O(log n)O(1) 堆顶
O(1) 邻接表O(E)O(V+E) DFS/BFSO(V+E)

排序算法速查

算法平均复杂度最坏复杂度空间稳定一句话
冒泡O(n²)O(n²)O(1)简单但慢,适合教学
选择O(n²)O(n²)O(1)交换次数最少
插入O(n²)O(n²)O(1)小规模或基本有序时最优
快速O(n log n)O(n²)O(log n)通用首选,分区思想精妙
归并O(n log n)O(n log n)O(n)性能稳定但需额外空间
堆排O(n log n)O(n log n)O(1)原地排序,空间最优
希尔O(n^1.3)O(n²)O(1)插入排序的改进版

大 O 复杂度排行

复杂度n=10n=1000n=1000000评价
O(1)111最优
O(log n)~3~10~20极优
O(n)1010001000000可接受
O(n log n)~30~10000~20000000尚可
O(n²)100100000010¹²需警惕
O(2ⁿ)1024天文数字不可能不可用

推荐学习资源

类型名称说明
经典教材《数据结构(C 语言版)》严蔚敏国内高校标准教材,体系完整
经典教材《算法导论》(CLRS)算法领域的权威参考书,深入系统
在线练习LeetCode (leetcode.com)海量算法题目,面试刷题首选
在线练习牛客网 (nowcoder.com)国内面试练习平台,适合校招准备
可视化工具Visualgo (visualgo.net)算法可视化,帮助理解执行过程
在线编译器Compiler Explorer (godbolt.org)查看 C 代码编译后的汇编,理解底层