跳到正文
XiaoGao 的个人博客

NO.06 · 数据结构与算法

数据结构与算法笔记:从线性结构到查找与排序

数据结构与算法课程笔记,覆盖数据结构基础、数组/链表/栈/队列、时间复杂度与空间复杂度、查找算法和排序算法。

发布 DATE
字数 WORDS
846
阅读 READ
2 分钟

算法是程序的骨架,数据结构是算法的舞台。这份笔记整理数据结构与算法课程的核心内容,覆盖数据结构基础、线性结构、算法复杂度、查找算法和排序算法,并附带一份复杂度速查表。

学习路线

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
数据结构基础
├── 逻辑结构与存储结构
├── 数据运算与内存
└── 数据结构与算法的关系
↓
线性结构
├── 数组
├── 链表
├── 栈
└── 队列
↓
算法基础
├── 时间复杂度
└── 空间复杂度
↓
算法应用
├── 查找:顺序查找、二分查找
└── 排序:冒泡排序、快速排序及其他常见排序

内容概览

第一章:数据结构

  • 数据结构基础:逻辑结构、存储结构、数据运算、内存,以及数据结构与算法的关系;
  • 数组:连续存储、随机访问、动态扩容、按位置插入、尾部插入、按位置删除、尾部删除和遍历;
  • 链表:节点、数据域、指针域、单链表组织方式,以及创建、遍历、插入、删除和释放;
  • 栈:后进先出(LIFO)、栈顶、入栈、出栈、查看栈顶,以及数组栈和链式栈;
  • 队列:先进先出(FIFO)、队头、队尾、入队、出队,以及顺序队列、循环队列和链式队列。

第二章:算法

  • 算法基础:算法定义、输入、输出、有限性、时间复杂度和空间复杂度;
  • 查找算法:顺序查找、二分查找,以及不同查找算法的前提条件和复杂度;
  • 排序算法:常见排序思想、冒泡排序、快速排序、复杂度、稳定性和适用场景。

复杂度速查

结构或算法 典型操作 时间复杂度 说明
数组 按下标访问 O(1) 连续存储支持随机访问
数组 中间插入或删除 O(n) 通常需要移动后续元素
链表 按位置查找 O(n) 需要从头节点逐步遍历
链表 已定位节点后的插入或删除 O(1) 不包含定位节点本身的成本
栈 入栈、出栈、查看栈顶 O(1) 操作集中在栈顶
队列 入队、出队 O(1) 取决于具体实现方式
顺序查找 查找元素 O(n) 可处理无序数据
二分查找 查找元素 O(log n) 前提是数据有序且支持按位置访问
冒泡排序 排序 O(n²) 适合用于理解排序过程
快速排序 排序 平均 O(n log n) 最坏情况通常为 O(n²)

建议的学习方式

  1. 先阅读数据结构基础,建立逻辑结构、存储结构和内存模型的整体认识;
  2. 分别画出数组、链表、栈和队列的存储示意图,再阅读对应操作;
  3. 对每个操作记录前置条件、数据变化、边界情况和复杂度;
  4. 学习查找和排序时,手工跟踪一组小规模数据的执行过程;
  5. 阅读课件后再补充独立代码实现,并为关键操作编写测试用例。

后续扩展方向

当前仓库以课程资料和学习索引为主,后续可以按课件章节补充数组、链表、栈、队列、查找和排序算法的代码实现、边界测试及复杂度实验记录。

仓库

    ↑↓ 选择↵ 打开>theme · >random · >top · >archive