什么是数据结构与算法
写程序时,你几乎总在做两件事:
- 把数据放在某个地方(内存布局、容器选择)
- 按某种步骤处理这些数据(查找、插入、排序、最短路径……)
前者对应数据结构,后者对应算法。二者合在一起,决定程序能不能在合理时间内跑完、内存会不会爆、代码好不好维护。
本文解决什么问题
帮你建立三件事:
- 数据结构与算法各自管什么
- 为什么必须一起学
- 本教程怎么读、会用到哪些 C / C++ 基础
用一个例子建立直觉
假设要在通讯录里找「张三」:
| 组织方式 | 查找办法 | 直觉代价 |
|---|---|---|
| 名字写在一张无序纸上 | 从上到下逐个看 | 人多就慢,约 |
| 按拼音排好的名册 | 跳着翻(二分) | 约 |
| App 里按姓名建索引 | 直接定位 | 平均接近 |
同是「找人」,数据组织方式不同,可用的算法也不同,快慢差很多。这就是二者总要一起学的原因。
开发者视角
选型很少是「只选一个容器」。更常见的是:业务操作集合(插入?按键查?按序遍历?)→ 候选结构 → 用复杂度与实现成本拍板。