数据结构

数据结构是在计算机中存储、组织数据的方式。从简单的变量、数组,到复杂的线段树、平衡树,都是数据结构的范畴。

程序运行离不开数据结构。不同的数据结构各有优劣,适用于不同的问题场景。根据具体问题选择合适的数据结构,可以大大提升程序的效率。

章节目录

基础数据结构

专题说明时间复杂度
后进先出的线性结构入栈/出栈
队列先进先出的线性结构入队/出队
链表动态存储的线性结构插入/删除
哈希表键值映射结构查找/插入 平均

树形数据结构

专题说明典型应用
并查集不相交集合的合并与查询连通性判断、最小生成树
优先队列的高效实现Dijkstra、堆排序
平衡树有序集合的动态维护排名查询、区间操作

区间数据结构

专题说明适用场景
单调栈维护单调性的栈下一个更大元素
单调队列维护单调性的队列滑动窗口最值
ST表静态区间最值查询RMQ问题
树状数组单点修改、前缀查询动态前缀和
线段树区间修改、区间查询各类区间问题

高级数据结构

专题说明
分块基于分块思想的数据结构
划分树区间第 k 小问题
跳表基于概率的有序结构
可持久化历史版本查询
树套树复合数据结构
K-D Tree多维空间查询
动态树动态维护森林

其他结构

专题说明
析合树排列的区间性质
PQ树排列约束问题
手指树函数式数据结构
霍夫曼树最优前缀编码

数据结构选择指南

flowchart TD
    A[需要什么操作?] --> B{单点操作}
    A --> C{区间操作}
    A --> D{集合操作}
    
    B --> B1[查找] --> B11[哈希表 O(1)]
    B --> B2[有序插入] --> B21[平衡树 O(log n)]
    
    C --> C1[静态查询] --> C11[ST表/前缀和]
    C --> C2[单点修改] --> C21[树状数组]
    C --> C3[区间修改] --> C31[线段树]
    
    D --> D1[合并查询] --> D11[并查集]
    D --> D2[最值维护] --> D21[堆]

此文件夹下有23条笔记。