Skip to content

Files

Latest commit

Sep 25, 2015
abaf27b · Sep 25, 2015

History

History

dataStruct

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
Sep 15, 2015
Jul 30, 2015
Aug 27, 2015
Aug 24, 2015
Aug 11, 2015
Aug 12, 2015
Aug 4, 2015
Sep 4, 2015
Sep 9, 2015
Sep 11, 2015
Sep 6, 2015
Sep 15, 2015
Sep 25, 2015
Sep 17, 2015
Jul 30, 2015
Jul 30, 2015
Jul 30, 2015
Jul 30, 2015
Jul 30, 2015
Jul 30, 2015
Jul 30, 2015
Sep 9, 2015

数据结构总览

一、1对1类型线性结构

  • 函数调用、历史操作
    • 共享内存栈 能预估两栈大小的情况下,可以节省空间
    • 逆波兰式编译器一般把四则运算先解析成逆波兰式之后再进行运算
    • 递归请注意递归终结条件,以及多次递归情况下栈的空间消耗
  • 队列
    • 循环队列从任何一个节点开始,都可以遍历整个队列
    • KMP模式匹配算法判断(精髓在判断的方式)给定字符串是否为主串的子串

二、1对n类型数据结构

    • 二叉树性质5种性质很重要
    • 遍历二叉树线性化的过程
    • 线索二叉树把线性化的过程记录下来,不用每次都遍历一边
    • 赫夫曼树权值越大的叶子越靠近根,带权路径越短

三、n对n类型数据结构

    • 图的存储和遍历复杂数据类型的内存结构
    • 最小生成树最小权重生成树(n个节点,n-1条边),Prim算法、Kruskal算法
    • 最短路径最佳路径,权重可以是时间、消耗金钱、距离等,求权重最大(小)和
    • 拓扑排序其实就是对一个有向图(包含AOV网)构造拓扑序列的过程
    • 关键途径求工程中必不可少且耗时最多的流程(AOE网)

四、查找

  • 有序表查找都是O(lgN)的时间复杂度,总比一个个循环的快

    • 折半查找可以看作一个二叉排序树,深度与时间复杂度规模相同
    • 插入查找为什么非要折半,不能是折四分之一?记住那个公式!
    • 斐波那契查找黄金比例决定下标位置
  • 线性索引查找索引也是一种数据结构

    • 稠密索引为数据一对一的建立索引,索引和数据的规模一样
    • 分块索引块间有序,快内无序
    • 倒排索引搜索引擎或数据库普通索引的基础原理
  • 二叉排序树(BST)左小右大,有可能退化成单链

  • 平衡二叉树(AVL)平衡因子,深度越大,时间复杂度越高,I/O开销越高

  • 红黑树5个规则,保证红黑分布,保证树的分布平衡,深度降低

  • 多路查找树(B-tree、B+tree)再平衡也解决不了数据量大的情况(树的深度还是会很大),如果一个节点可以存多条记录,并且能保证左小右大的规则

  • 散列表查找数据间没关系,通过哈希函数操作哈希表,注意哈希冲突

五、排序

  • 冒泡排序平均O(n^2),最好O(n),最坏O(n^2),辅助空间O(1),稳定
  • 简单选择排序平均O(n^2),最好O(n^2),最坏O(n^2),辅助空间O(1),稳定
  • 直接插入排序平均O(n^2),最好O(n),最坏O(n^2),辅助空间O(1),稳定
  • 希尔排序平均O(nlgn)~O(n^2),最好O(n^1.3),最坏O(n^2),辅助空间O(1),不稳定
  • 堆排序平均O(nlgn),最好O(nlgn),最坏O(nlgn),辅助空间O(1),不稳定
  • 归并排序平均O(nlgn),最好O(nlgn),最坏O(nlgn),辅助空间O(n),稳定
  • 快速排序平均O(nlgn),最好O(nlgn),最坏O(n^2),辅助空间O(lgn)~O(n),不稳定