数据结构 miniWiki

资源

课程

Princeton

MIT

网站

在线演示

  • VisuAlgo: visualising data structures and algorithms through animation.

在线练习

  • LeetCode: the world’s leading online programming learning platform.
    • 建议用 leetcode.vscode-leetcode 在本地刷题及备份。本地题库无法更新时,可先执行 rm ~/.lc/leetcode/cache/problems.json,再点击刷新按钮。
    • 获取实时统计信息:jsonsvg
  • PAT (Programming Ability Test) and PTA (Programming Teaching Assistant).
  • 牛客网

数组及基于数组的算法

数组的实现

长度固定的数组长度可变的数组(向量)

通用排序

平方排序Shell 排序归并排序快速排序

通用查找

顺序查找二分查找排列

并查集

队列 (Queues)

线性队列

链表队列双向队列随机队列

优先队列

二叉堆Fibonacci 堆van Emde Boas 树

散列 (Hashing)

散列函数

必要条件基于余数的散列函数基于乘法的散列函数程序实现

冲突化解

分离链法开地址法

全域散列

全域散列函数族基于点乘的全域散列基于余数的全域散列

完美散列

静态字典二重散列

树 (Trees)

树的实现

二叉搜索树

平衡搜索树

AVL 树红黑树B-树

几何搜索树

Kd-树区间树

图 (Graphs)

图的实现

邻接矩阵邻接链表邻接集合隐式表示

广度优先搜索

递归实现循环实现应用

深度优先搜索

递归实现邻接集合应用环路检测拓扑排序数独求解器

最小展开树

KruskalPrim

单源最短路径

DijkstraBellman–Ford

全源最短路径

矩阵乘幂类比Floyd–WarshallJohnson

最大流、最小割

Ford–Fulkerson最大流–最小割定理

串 (Strings)

串的实现

基数排序

始于末位的基数排序始于首位的基数排序三路基数快速排序

后缀数组

字典树

R-路字典树三元搜索字典树

子串搜索

Knuth–Morris–PrattBoyer–MooreRabin–Karp

正则表达式

匹配算法NFA动态规划

数据压缩

复杂度

数学(理论)分析

科学(实验)测量

NP-完备性

常用策略

分而治之

动态规划

贪心选择