322 次浏览
总对应和叶对应是更复杂的对应技术。在这两种技术中,一半的元素位于最小优先队列中,另一半位于最大优先队列中。当元素数量为奇数时,一个元素存储在缓冲区中。此缓冲元素不是任一优先队列的成员。在总对应技术中,最小优先队列中的每个元素 x 都与最大优先队列的不同元素 y 配对。(x, y) 是一对对应元素,使得优先级(x)
226 次浏览
存在从单端优先队列 (PQ) 数据结构得出高效 DEPQ(双端优先队列)数据结构的通用方法,这些方法还提供了 remove(bNode) 操作的高效实现(此操作从 PQ 中删除节点 bNode)。其中最简单的方法,即双结构方法,同时维护一个最小优先队列和一个最大优先队列,其中包含与最小优先队列和最大优先队列节点之间对应指针相关联的所有 DEPQ 元素,这些指针包含相同的元素。图 D 显示了元素 7、8、3、6、5 的双堆结构。对应指针显示... 阅读更多
112 次浏览
双堆存在从单端优先队列 (PQ) 数据结构得出高效 DEPQ(双端优先队列)数据结构的通用方法,这些方法还提供了 remove(aNode) 操作的高效实现(此操作从 PQ 中删除节点 aNode)。其中最简单的方法,即双结构方法,同时跟踪一个最小优先队列和一个最大优先队列,其中包含与最小优先队列和最大优先队列节点之间对应指针相关联的所有 DEPQ 元素,这些指针包含相同的元素。图 A 显示了元素 7、8、3、6、5 的双堆结构。对应... 阅读更多
169 次浏览
现在我们将解释从 deap 数据结构中删除最小元素的技术。在删除过程中,我们的主要目标是从 deaps 中删除最小值。由于树的高度始终为 log n,因此它消耗时间顺序为 log n。我们可以讨论如下删除操作 -过程 deap_deletion(b[],m):if(m
457 次浏览
要将元素插入 deap 数据结构,我们可能需要如下所示的计算最小值和最大值的程序 -过程 min_value(m)://计算 deap 中的最小值。返回 m-2log2((m-1);过程 max_value(m)://计算 deap 中的最大值。返回 m+2log2(m-1);deap 数据结构中的插入操作可以通过以下方式完成 -对于任何堆 b[],我们应该检查 m 是否是 deap 最大堆中的位置。然后,我们将计算 deap 中的最小值和最大值。现在,比较左子树和右子树的键值。最后,我们执行... 阅读更多
6K+ 次浏览
最小-最大堆定义为一个完整的二叉树,其中包含交替的最小(或偶数)和最大(或奇数)层。偶数层表示为例如 0、2、4 等,奇数层表示为 1、3、5 等。我们接下来考虑根元素位于第一层,即 0。最小-最大堆示例最小-最大堆的特征最小-最大堆中的每个节点都与一个数据成员(通常称为键)相关联,其值用于计算最小-最大堆中节点的顺序。根元素是... 阅读更多
2K+ 次浏览
Deap 定义为一种数据结构,其根节点没有元素或键值。它是通过实现以下规则形成的 -根节点没有元素,表示根节点为空。deap 的左子树应表示最小堆。deap 的右子树应表示最大堆。因此,可以通过 deap 结构以数学方式提供以下语句的正确性 -如果某个节点的左子树和右子树非空,并且它们的对应节点可以分别用“a”和“b”表示,则 -a.KeyValue
165 次浏览
双端优先队列 (DEPQ) 或区间堆具有以下操作 -isEmpty()此函数用于检查 DEPQ 是否为空,如果为空则返回 true。size()此函数用于返回 DEPQ 中存在的元素总数。getMin()此函数用于返回优先级最低的元素。getMax()此函数用于返回优先级最高的元素。put(z)此函数用于将元素 z 插入 DEPQ。removeMin()此函数用于删除优先级最小的元素并返回此元素。removeMax()此函数用于删除优先级最高的元素并返回此元素。操作 isEmpty()、size()、getMin() 和 getMax() 消耗 O(1)... 阅读更多
246 次浏览
区间堆与嵌入式最小-最大堆相同,其中每个节点包含两个元素。它被定义为一个完整的二叉树,其中左侧元素小于或等于右侧元素。这两个元素定义一个闭合区间。除根节点之外的任何节点表示的区间都是父节点的子区间。左侧的元素表示最小堆。右侧的元素表示最大堆。根据元素数量,允许两种情况 -偶数个元素:在这种情况下,每个节点包含两个元素... 阅读更多
308 次浏览
在区间堆中,最小的元素是根节点左侧的元素。此元素被删除并返回。为了填充根节点左侧创建的空缺,从最后一个节点删除一个元素,然后再次插入到根节点中。此元素接下来与下降节点的所有左侧元素依次比较,并且当满足区间堆的所有条件时,该过程终止。如果节点中的左侧元素变得高于右侧元素... 阅读更多