更好更快地运算 - 信息表示和如何处理
元素在内存中连续存储,通过索引快速访问
元素通过指针链接,插入删除灵活但访问较慢
| 操作 | 数组 | 链表 |
|---|---|---|
| 按索引访问 | 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²) | O(n²) | O(1) | 简单,但效率低 |