cost 195 ms
高效的HEAPIFY方法减少比较次数 - Efficient HEAPIFY method to reduce number of comparisons

考虑一个有n元素的二元最大堆。 它的高度为O(log n) 。 当新元素插入堆中时,它们将在堆中传播,以便始终满足 max-heap 属性。 新元素将作为子元素添加到最后一层。 但是插入后,可能会违反最大堆属性。 因此,将使用 heapify 方法。 这将具有O(log n)的时间复杂度,即堆的高度 ...

列出可能是最后插入最大堆中的所有键 - List all the keys that could have been the last key inserted in a Max heap

上面是在一系列插入和删除操作之后创建的最大堆。 如果我们假设最后一个操作是插入。 可能是最后插入的密钥的可能密钥是什么? 我真的很困惑我们如何回答这个问题以及解决方案背后的理由。 如果有人能给我解决方案的解释,我将不胜感激。 谢谢! ...

2023-01-05 19:35:04   1   20    max-heap  
找到 BST 的最小值/最大值是否被认为是 O(1) 时间? - Is finding the min/max of BST considered to be O(1) time?

我正在使用 BST 构建队列,但我意识到最小/最大堆可能更好。 但是,BST 可能会起作用,因为如果我们在 BST 中存储对头/尾的引用,那么查找非常接近 O(1)..例如: 如果我们有对头元素 = (1) 的引用,那么如果 (1) 没有右孩子,则其父元素 (2) 是下一个最小的。 否则,如果 ( ...

Heapify 方法对于最大堆无法正常工作 - Heapify method is not working properly for max heap

我正在准备数据结构和算法期末考试。 我正在努力研究我们本学期学到的所有数据结构,并自行编写程序以帮助我为期末考试做准备。 我现在正在处理最大堆,其中包括插入(使用堆化)和检索最大值。 我被困在父母和孩子的堆积/交换上。 似乎 heapify 不起作用,因为我按照插入数字的顺序取回了一个数组。 这是我 ...

如何通过检查消息优先级来实现字符串优先级队列 - how to implement string priority queue with checking message priority

Messenger 用于发送或接收文本消息。 当某人离线时,信使维护一个消息缓冲区,当他上线时将其传递给接收者。 该现象发生在简单的时间戳现象上,先传递的消息将首先发送给接收者,晚接收的消息将在它之后传递。 有时缓冲区中的消息可能具有更高的优先级,因此它应该以更高的优先级更早地传递。 一些消息将在 ...

以 klog(k) 复杂度打印最大堆大小 n 中的 k 个最大元素 - Print k largest elements in a max heap sized n, in klog(k) complexity

我尝试编写一个算法来打印最大堆的 k 个最大元素,但我无法以正确的复杂度来完成它。 这是我写的伪代码- 在此处输入图像描述在此解决方案中,我基于原始最大堆创建了一个新的最大堆,因此它的大小始终小于 K 因此 max-heapify 和其他此类函数的复杂性是 O(klogk) 而不是我所要求的 O(k ...

优先队列问题。 在 while 循环中未定义优先级。 如何将元素排入队列? - priority queue question. priority is undefined in while loop. how to enqueue element to queue?

在 javascript 中将优先级队列作为最小堆。 控制台不断返回优先级在 while 循环中未定义。 问题是什么? / 如何将元素排入队列? //min-heap class PriorityQueue { constructor(){ this.values = []; } enqueu ...

对最大堆进行排序会返回一个按降序排列的排序列表。 应该是升序吗? - Sorting a Max Heap returns a sorted list in decending order. Should be in ascending order?

我的教授向我们介绍了如何使用 ArrayList 创建 Max Heap 类。 然后他要求我们编写一个 maxHeapSort 方法。 我几乎成功地按降序对堆进行排序,但我假设排序应该按升序排列。 现在我正在使用最大堆 [11, 5, 8, 3, 4, 1] 的 ArrayList,它正在排序为 [ ...

Java 对象优先级队列::检查对象成员的方法? - Java Priority Queue of Objects :: A way to check an object's member?

假设我有一个整数数组: 我想知道 K 个最频繁出现的元素。 短语“ K 最频繁”立即让我想到了最大堆数据结构,因此我决定创建一个自定义的 object 来对元素进行计数和确定优先级: 这个 object 本质上是两个整数,配对在一起。 简单的。 好的:现在是主要代码: 你看到了问题。 当我考虑ar ...

是否可以在不重建堆的情况下从两个堆构建最大堆? - Is it possible to build a max heap from two heap without rebuilding the heap?

我最近参加了计算机科学考试,有一个类似的问题。 有两个最大堆(实现了数组)。 你需要想出一个算法来合并这两个最大堆并创建一个新的最大堆(数组实现) 问题的解法很直观就是: 合并两个数组 调用堆重建 我查看了互联网并遇到了相同类型的解决方案。 但是,我写了一个我自己无法反驳的解决 ...

Python heapq 优先级队列 Maxheap - Python heapq Priority Queue Maxheap

我知道使用 heapq 的优先级队列是作为 minheap 实现的。 我需要将优先级队列实现为 maxheap,它按 AWS 日期时间字符串对元素进行排序。 当我调用 heapq.heappop() 方法时,我希望具有最新日期时间的元素首先从队列中弹出。 网上的一切似乎都指向仅使用 minheap ...

为什么 maxHeap 初始化语法通过 priority_queue 与 minHeap 不同? - Why is maxHeap initialisation syntax different from minHeap through priority_queue?

我试图使用常规语法创建一个 minHeap 但发现 maxHeap 被初始化为: 而 minHeap 被初始化为: 知道为什么 C++ 会这样吗? 如果 minHeap 和 maxHeap 是使用类似的语法初始化的,那么记忆起来会容易得多。 ...

当底层结构是数组时,为什么二叉堆中的删除是一个 O(logN) 操作 - Why is deletion in binary heap a O(logN) operation, when the underlying structure is an array

我知道最小/最大堆中的删除总是发生在根部,当它发生时,被删除的节点被二进制堆中的最后一个节点替换,然后节点向下堆化以找到其正确的 position,使这个平均O(logN) 操作。 现在,二叉堆通常表示超过 arrays。问题来了:如果在 position [0] 处的数组中删除是 log(n),因 ...


 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM