大数据 数据结构|青训营笔记

92 阅读2分钟
这是我参加参与「第四届青训营」笔记创作活动的的第6天

大数据典型特征中,数据量大,数据类型多,在存储阶段需要根据数据类型匹配合适的存储方式.包括结构化和非结构化数据,redis这样的key-value数据库.需要对数据结构多加考虑;纯新手向

适合存储数据元素之间存在一对多的层次关系.应用最多最广泛的是b+树 存储方式包括顺序存储,链式存储等;

顺序存储

双亲存储结构,用数组即可实现.用数组下标表示树中节点,元素内容表示结点的双亲结点,就有了结点和结点之间的关系,通常是一个复杂的结构体

链式存储

孩子和孩子兄弟存储结构,用数据域和指针域共同构成链式结点结构

要得到树的全部信息,需要对树进行遍历 力扣中最简单的数据结构题目是基于三种遍历来的,

除了常用的三次遍历,还有层次遍历,建立一个循环队列,先将树头结点入队列,然后出队列,访问结点,如果有左右子树,则将左右子树的根节点入队,然后出队列,对出队结点访问,直至队列空

线索二叉树能够避免系统栈,用户栈调用,把遍历过程线性化.除了结点的左右孩子,线索化会把空指针利用起来,作为当前结点前驱或后继线索

堆是一颗完全二叉树,是非线性数据结构,在海量数据存储中,堆顶为元素最值,可以放在内存中运行,常用来在CRUD频率搞得数据中找最值或第k大的元素;支持建立,插入,删除堆顶元素等操作

hash

hash索引每次查找的时间复杂度约为O(1),实际与hash的冲突率有关; 空间复杂度为O(n),但性能不稳定,只能等值匹配,不能范围查询,也不具有顺序,在关系数据库中用的比较少; 但java中有hashtable,能够保证并发安全,也有hashmap等