01 数组+链表+跳表+二叉树

vvEcho 2024-02-27 19:39:51
Categories: Tags:

数组

数组是一种存储相同数据类型且长度固定的集合;它的优点是每个元素都有下标,所以数据的查找遍历很快;但是插入更新由于涉及到下标的整体变更,效率较低

链表

链表是一个存储上不连续,也没有顺序的数据结构;它的每一个节点都包含数据和引用指向组成;其中含有前后引用指向的是双向链表,只含有一个引用指向的是单向链表;它的优点是插入删除只需要改变相连元素的前后指向,所以效率较高;对于查询来说,只能通过遍历找到对应的节点,效率较低

跳表

跳表是一种支持二分查找的多层级的有序链表,跳表是是一种可以进行二分查找的有序链表。跳表在原有的有序链表上面增加了多级索引,通过索引来实现快速查找。跳表不仅能提高搜索性能,同时也可以提高插入和删除操作的性能

红黑树

红黑树是一种平衡二叉树,只不过在平衡二叉树的基础上给各节点加上了红或者黑的属性,其中红黑树的特性如下:根节点和叶子节点都为黑色,红色的节点两个子节点都为黑色,对于任意一个节点到其任意一条叶子节点的路径上包含相同个数的黑色节点;HashMap引入红黑树是优化了存储,且将链表的查找时间复杂度由O(n) 变为了O(log2 n)

B+树

B+树是为磁盘或其他直接存取辅助设备而设计的一种平衡查找树,在B+树中,所有记录节点都是按键值的大小顺序存放在同一层的叶节点中,各叶节点指针进行连接。相对于B树来说,它改变的点在于非叶子节点只存对应的指针,叶子节点存储数据;所以更适合范围查找,例如mysql InnoDB索引.

平横二叉树

平衡二叉树是采用二分法思维把数据按规则组装成一个树形结构的数据,用这个树形结构的数据减少无关数据的检索,大大的提升了数据检索的速度;平衡二叉树的数据结构组装过程有以下规则:
非叶子节点只能允许最多两个子节点存在,每一个非叶子节点数据分布规则为左边的子节点小当前节点的值,右边的子节点大于当前节点的值(这里值是基于自己的算法规则而定的,比如hash值);