数据结构与算法
文章平均质量分 91
数据结构与算法
gaoZhuanMing
这个作者很懒,什么都没留下…
展开
-
数据结构—完全二叉堆
1. 简介完全二叉堆可用于实现优先队列。当然,使用数组或列表也可以实现优先队列,但通常需要先将其中的所有数据进行排序才可,即首先维护一种全序关系。但事实上,优先队列只要能够确定全局优先级最高的 entry 即可,而不要求全局先有序。完全二叉堆无需先对所有数据进行排序即可确定全局优先级最高的 entry,因此更加适用于优先队列的实现。2. 定义完全二叉堆的逻辑结构就是一棵完全二叉树,但堆可以使用数组来实现。对于最小堆来说,堆中每个父节点都要小于等于其子节点;对于最大堆原创 2021-12-07 23:25:51 · 432 阅读 · 0 评论 -
数据结构—跳跃表
1. 简介对于数组来说:如果数组是有序的,则搜索操作可以使用二分搜索法,其时间复杂度为 O(logn)O(\log n)O(logn);但插入和删除操作的时间复杂度则需要 O(n)O(n)O(n)。对于链表来说:即使链表是有序的,其搜索操作也无法使用二分搜索法,只能进行顺序查找,时间复杂度为 O(n)O(n)O(n);但其插入和删除操作具有 O(1)O(1)O(1) 的时间复杂度。为了兼顾搜索、插入和删除操作的效率,平衡搜索树被提出。但无论是 AVL 树还是红黑树,其实现都较为复杂。原创 2021-12-07 09:19:58 · 1245 阅读 · 0 评论 -
数据结构—红黑树
1. 简介AVL 树在删除节点之后可能需要多达 O(logn)O(\log n)O(logn) 次的旋转才能够使整棵树恢复平衡,但也因此导致了全树拓扑结构频繁地发生大幅度的变化。红黑树主要是针对上述不足所做的改进,它也是一棵平衡二叉搜索树,且可以保证每次插入、删除操作之后的重平衡过程中,全树拓扑结构的更新仅涉及常数个节点。红黑树的搜索、插入和删除操作的时间复杂度也为 O(logn)O(\log n)O(logn)。2. 约束红黑树具有如下约束:(1)每个节点要么为红色,要么为黑色;(2)树原创 2021-12-05 17:31:29 · 674 阅读 · 0 评论 -
数据结构—AVL树
1. 约束对于节点 vvv,我们定义其平衡因子为:vvv 的左、右子树的高度差。AVL 树是一棵二叉搜索树,但其引入了额外的约束:树中各节点的平衡因子的绝对值不得超过 111。设一共有 nnn 个节点,AVL 树始终可以将树的高度控制在 O(logn)O(\log n)O(logn) 以内,且每次搜索、插入和删除操作均可在 O(logn)O(\log n)O(logn) 时间内完成。2. 插入往 AVL 树中插入新节点可能会增加树的高度,从而导致其所在的子树失衡。(1)首先按原创 2021-12-05 12:04:20 · 502 阅读 · 0 评论 -
数据结构—B+树
1. 约束B+ 树的约束与 B 树类似,一棵 mmm 阶 B+ 树具有如下特点:(1)根节点约束:根节点要么是一个叶节点,要么至少具有两个孩子节点;(2)内部节点约束:除根节点以外,每个内部节点都具有 [⌈m/2⌉,m][\lceil m/2\rceil, m][⌈m/2⌉,m] 个孩子节点,因此具有 [⌈m/2⌉−1,m−1][\lceil m/2\rceil -1, m-1][⌈m/2⌉−1,m−1] 个关键码;(有些定义中,要求关键码个数与指针个数相同)(3)叶节点约束:所有叶节点都处在树的同原创 2021-12-04 16:15:48 · 871 阅读 · 0 评论 -
数据结构—B树
1. 简介如果数据太多导致内存装不下,则必须把数据结构存放到磁盘上,此时大 OOO 模型不再适用。磁盘的访问代价相比于 CPU 计算和内存访问来说实在是太高了,因此宁愿执行大量的计算,也要减少磁盘 I/O。不平衡二叉树在最坏的情况下具有线性的深度,因此如果将其作为一种磁盘数据结构,则最坏情况下仍需进行大量的磁盘 I/O。2. 约束一棵 mmm 阶 B 树具有如下特点:(1)根节点约束:根节点要么是一个叶节点,要么至少具有两个孩子节点;(2)内部节点约束:除根节点以外,每个内部节点都具有 [原创 2021-12-04 14:34:23 · 339 阅读 · 0 评论