美文网首页
大话数据结构 读书笔记

大话数据结构 读书笔记

作者: daydaygo | 来源:发表于2018-11-08 20:21 被阅读18次

    大话数据结构

    绪论

    if yu give someone a program, you will frustate them for a day; if you teach them how to program, you will frustate them for a lifetime.
    程序设计 = 数据结构 + 算法
    数据结构: 相互之间存在一种或多种特定关系的数据元素的集合
    逻辑结构: 集合 / 线性 / 树形 / 图形
    物理结构: 顺序 / 链式
    抽象数据类型: 问题 -> 分解 / 抽象 / 信息隐藏

    算法

    算法是解决特定问题求解步骤的描述, 在计算机中变现为指令的有限序列
    特性: 输入输出 + 有穷 + 确定 + 可行
    要求: 正确性 + 可读性 + 健壮性(不确定输入的处理) + 效率高&存储低
    时间复杂度: 1 < logN < N*logN < N^2 < N^3 < 2^N < N! < N^N
    最好 / 最差 / 平均 / 空间复杂度

    线性表

    线性表List: >=0 个数据元素的有限序列
    顺序存储
    链式存储: 头插法 / 尾插法 / 跳跃删除 / 替代删除
    静态链表: 使用数组实现链表
    循环链表 / 双向链表

    栈&队列

    栈stack: 限定在表尾进行操作的线性表
    2栈 -> 队列
    栈的应用 -> 递归 / 后缀表达式

    队列queue: 只允许在一端插入, 在另一端删除的线性表
    循环队列 -> 队列存储不足

    黄山叶落松落叶山黄
    百度百科 - 璇玑图

    串: 由 >=0 个字符组成的有限序列
    串的比较: 比较字符的 ASCII 码

    朴素的模式匹配算法 / KMP模式匹配算法

    树Tree

    森林 -> 树 -> 二叉树 -> null / 1个节点 / 斜树 -> 完全二叉树 -> 满二叉树
    性质: 第i层<=2^(i-1); 深度k<=2^(k-1); 度

    遍历: 前序/中序/后序(递归/栈 实现) + 层次(队列实现)
    前序/后序 + 中序 构建树 -> 获取 root 节点, 就可以通过 中序遍历知道 左右子树

    线索二叉树 -> 线索化(线性)

    霍夫曼树(每次将权值最小的2个节点构成二叉树) -> 霍夫曼编码

    图Graph

    图: >0 个有穷顶点和顶点之间的边的集合组成

    无向图 / 有向图
    邻接矩阵 / 邻接表
    dfs / bfs
    最小生成树: Prim / Kruskal
    最短路径: Dijkstra / Floyd
    拓扑排序: 查找入度为0的顶点, 删除此顶点&边, 重复 -> 关键路径

    查找

    有序表查找: 二分查找 / 插值查找(数据分布均匀) / 斐波那契查找
    线性索引查找: 稠密索引(按照关键码有序排列) / 分块索引 / 倒排索引(搜索技术)

    二叉排序树BST: 左子树皆小于root, 右子树皆大于root / 查找 / 插入 / 删除 -> 二叉平衡数AVL: 左右子树高度差<=1 / 实现算法

    多路查找树(B树): 众多文件中查找
    2-3 树 -> 2-3-4 树 -> B 树 -> B+ 树(包含重复节点来标识数据范围)

    散列表(hashtable) -> 散列技术(存储 / 查找) -> 散列冲突

    排序

    排序: 稳定性 / 内排序&外排序 / 时间 / 辅助空间 / 算法复杂性
    交换排序: 冒泡 -> 快排
    插入排序: 直接插入 -> 希尔
    堆排序
    归并排序

    相关文章

      网友评论

          本文标题:大话数据结构 读书笔记

          本文链接:https://www.haomeiwen.com/subject/iplgxqtx.html