Data Structures · Algorithms
看见算法
如何思考
17 个核心课题,逐步动画拆开每一步比较与交换。代码覆盖 JavaScript、Python、Java、C++。
- 课题
- 17
- 语言
- 4
- 动画
- 逐步
7
2
9
4
1
8
5
3
冒泡排序:相邻比较,大的往后冒。
1 / 51
建议路径
从线性结构走到图,顺着学不会乱。
从这里开始
Array入门
数组
连续内存中的同构序列。按下标随机访问极快,在中间插入或删除需要搬移元素。
线性结构访问 O(1) / 插入 O(n)
Hash Table核心
哈希表
把键映射到桶下标。平均常数时间的插入、查找、删除;冲突用拉链或开放寻址解决。
哈希均摊 O(1)
Heap核心
堆
完全二叉树,父结点总不小于(或小于)孩子。数组即可表示,堆顶永远是最值。
树与堆插入 / 弹出 O(log n)
Binary Search核心
二分查找
在有序序列上每次丢掉一半。边界写对,对数时间定位目标。
查找O(log n)
Quick Sort核心
快速排序
选一个基准,小的摆左边、大的摆右边,再递归两边。原地、缓存友好。
排序平均 O(n log n)
BFS核心
广度优先
用队列一层一层扩张。无权图上第一次到达就是最短路。
图O(V+E)