数据结构与算法
约 872 字大约 3 分钟
2025-07-07
简介
本栏目收录数据结构与算法相关的学习资料,帮助你掌握编程基础和算法思维。
📖 数据结构与算法介绍
数据结构与算法是计算机科学的基石,也是每个程序员必须掌握的核心知识。好的数据结构和算法能够极大提升程序的性能和效率。
🎯 为什么要学习数据结构与算法
- 提升编程能力:理解底层原理,编写更高效的代码
- 解决复杂问题:面对复杂业务场景时能够选择合适的解决方案
- 通过技术面试:大厂面试必考,LeetCode 刷题必备
- 优化系统性能:合理的数据结构选择能提升系统性能数倍
- 算法思维培养:培养抽象思维和问题分解能力
📊 基础数据结构
线性结构:
- 数组(Array):连续存储,随机访问快,插入删除慢
- 链表(Linked List):离散存储,插入删除快,查找慢
- 栈(Stack):后进先出(LIFO),函数调用栈、表达式求值
- 队列(Queue):先进先出(FIFO),任务调度、消息队列
树形结构:
- 二叉树(Binary Tree):每个节点最多两个子节点
- 二叉搜索树(BST)、平衡二叉树(AVL)、红黑树
- 堆(Heap):完全二叉树,最大堆/最小堆
- 字典树(Trie):字符串快速检索
图结构:
- 图(Graph):节点和边的集合(有向图、无向图、加权图)
哈希结构:
- 哈希表(Hash Table):O(1) 查找,解决哈希冲突
🔧 经典算法
排序算法:
- 基础排序:冒泡、选择、插入排序 - O(n²)
- 高级排序:快速排序、归并排序、堆排序 - O(n log n)
搜索算法:
- 二分查找:有序数组快速查找 - O(log n)
- 深度优先搜索(DFS):树和图的遍历
- 广度优先搜索(BFS):最短路径问题
高级算法:
- 动态规划(DP):背包问题、最长公共子序列
- 贪心算法:局部最优到全局最优
- 回溯算法:N 皇后、数独、全排列
- 图算法:最短路径、最小生成树
📈 时间复杂度对比
| 复杂度 | 类型 | 示例算法 |
|---|---|---|
| O(1) | 常数 | 哈希表查找、数组下标访问 |
| O(log n) | 对数 | 二分查找、平衡树操作 |
| O(n) | 线性 | 数组遍历、链表查找 |
| O(n log n) | 线性对数 | 快速排序、归并排序、堆排序 |
| O(n²) | 平方 | 冒泡排序、选择排序、插入排序 |
| O(2ⁿ) | 指数 | 斐波那契递归、子集枚举 |
📚 学习资源
在线平台:
学习网站:
- 算法导论(MIT 课程) - 经典算法课程
- GeeksforGeeks - 算法教程和题解
- HackerRank - 编程练习平台
推荐书籍:
- 《算法导论》:算法圣经,理论完备
- 《算法(第4版)》:Java 实现,图文并茂
- 《剑指 Offer》:面试必备,经典题目
- 《算法图解》:图解算法,入门友好
📚 内容导航
- Hello 算法 - 算法入门教程
- 数据结构 - 常见数据结构的实现和应用
- 算法案例 - 实际算法问题的解决方案
贡献者
更新日志
2025/12/29 16:03
查看所有更新日志
6dd59-feat: Add new documentation across Go, PHP, Docker, Linux, Database, Middleware, and Fundamentals, while removing some old images and files.于