程序=数据结构 算法 - 图1

常见的数据结构

  • 10个重要的数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie树
  • 线性表
    • 数组
    • 链表
      • 单链表
      • 双向链表
      • 循环链表
      • 双向循环链表
      • 静态链表
    • 队列
      • 普通队列
      • 双链队列
      • 阻塞队列
      • 并发队列
      • 阻塞并发队列
      • 顺序栈
      • 链式栈
  • 散列表
    • 散列函数
    • 冲突解决
      • 链表法
      • 开放寻址
      • 其他
    • 动态扩容
    • 位图
    • 二叉树
      • 平衡二叉树
      • 二叉查找树
      • 平衡二叉查找树
        • AVL树
        • 红黑树
      • 完全二叉树
      • 满二叉树
    • 多路查找树
      • B树
      • B+树
      • 2-3树
      • 2-3-4树
      • 小顶堆
      • 大顶堆
      • 优先级队列
      • 斐波那契堆
      • 二项堆
    • 其他
      • 树状数组
      • 线段树
    • 图的存储
      • 邻接矩阵
      • 邻接表
    • 拓扑排序
    • 最短路径
    • 关键路径
    • 最小生成树
    • 二分图
    • 最大流

基本算法

  • 10个重要的算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法
  • 递归
  • 排序
    • O(n^2)
      • 冒泡
      • 插入
      • 选择
      • 希尔
    • O(nlogn)
      • 归并排序
      • 快速排序
      • 堆排序
    • O(n)
      • 基数排序
      • 计数排序
      • 桶排序
  • 搜索
    • 深度优先搜索
    • 广度优先搜索
      A*启发式搜索
  • 查找
    • 线性表查找
    • 树结构查找
    • 散列表查找
  • 字符串匹配
    • 朴素
    • KMP
    • Robin-Karp
    • Boyer-Moore
    • AC自动机
    • Trie
    • 后缀数组
  • 穷举
    • 求n个数的全排列
    • 八皇后问题
  • 分而治之(减而治之)
    • 二分查找(减而治之)
    • 归并排序(分而治之)
  • 贪心
    • 最小生成树
    • 单源最短路径
  • 动态规划
    • 背包问题
    • 士兵路径问题
  • 回溯
  • 其他
    • 数论
    • 计算几何
    • 概率分析
    • 并查集
    • 拓扑网络
    • 矩阵运算
    • 线性规划