问题标签 [max-heap]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
86 浏览

java - JVM 无缘无故地不断调用垃圾收集器

在测试 MaxFreeHeapRatio 和 MinFreeHeapRatio 时我发现了以下情况:

应用程序堆分析

垃圾收集器活动分析

因此,即使有大量可用内存,JVM 也会继续执行垃圾收集器。

我正在使用以下标志:

知道这种行为的原因吗?

0 投票
3 回答
11335 浏览

algorithm - 试图理解 max heapify

我试着看http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-fall-2011/lecture-videos/lecture-4-heaps-and -heap-sort/了解堆和堆排序,但没有发现这一点。

我不明白 max-heapify 的功能。它似乎是一个递归函数,但由于树的高度,它以某种方式运行在对数时间内。

对我来说这毫无意义。在最坏的情况下,它是否必须反转每个节点?如果不反复触及每个节点,我不明白如何做到这一点。

0 投票
1 回答
296 浏览

c - 如何修改最大堆中值的优先级?

我正在写一个最大堆,它可以改变优先级/值。但是,我很难理解我的代码有什么问题。我已将此作为参考:ref 这是我的代码(我隐藏了一些功能,因为它不是这里的重点)

当我进行以下执行时,它会产生不好的结果......这里有什么问题?例如...

请注意,我使用数组来存储 HEAP_ELEM 的索引,以便了解 HEAP_ELEM 的位置(它的主键为“fu”并更改其优先级。这是我的输出:

0 投票
1 回答
79 浏览

max-heap - 帕斯卡 Max_Heapify

我用帕斯卡做了这些。

我用帕斯卡写了这个程序,但它似乎不起作用,我无法弄清楚有什么问题可以帮助我吗?谢谢

0 投票
0 回答
260 浏览

java - 如何在将键值对添加到 TreeMap 时保持 Java TreeMap 大小为常数?

CODE IS HERE是 Java 中 TreeMap 的一个很好且简单的示例,用于跟踪按排序顺序添加到映射中的键值对。但是,我不确定如何确保在 TreeMap 中只保留 10 个项目。如何保证 TreeMap 的大小始终是一个常数,比如 10?所以最初的问题是:在不断涌入的键值流中,跟踪 TreeMap 中按值加权的前十个键值对。

我想看看如何在 java 中编写代码来限制 TreeMap 的大小。我在想它是这样的:首先将新的键值对添加到 TreeMap 中,然后检查 TreeMap 的大小,如果大于 10,然后从 TreeMap 中删除最小的键值对和大小返回 10,TreeMap 准备在其中添加一个新的键值对。

0 投票
0 回答
564 浏览

c++ - 同时使用二叉搜索树和最大堆(C++)

[已编辑!!!]阅读了不同的数据结构并创建了许多(在 C++ 中)我只是想知道我们如何创建一个数据结构,其中每个节点都是一对键 (x,y),其中 x 将指代到 Max Heap 的值和 y 到二叉搜索树的键。我想要同时使用 BST 和 Max Heap 之类的东西(每次都使用元组或键对作为节点)。为了更清楚,从技术上讲,我的意思是在树的每个节点 i 中,将存储一对键 (x,y),其中 x 是键的优先级,y 是键的值。

它将能够支持上述数据结构的所有功能,例如插入和删除。例如,关于删除,元组将通过一系列简单的连续旋转连续深入,直到元组成为叶子。然后,据您所知,删除很容易。如果元组——我们想要删除的元组——是叶节点或内部节点,则可以以与 BST 中相同的方式进行删除。

关于插入,仅根据二叉搜索树的键将元组插入树中。之后,该对将在树中连续移动到更高的位置,直到违反最大堆的基本属性。

此外,我还想到了一些额外的功能。一个附加函数可以是 find_second_next() 之类的函数,将 x 键作为参数,该键已经在树上,该函数将在树的所有大于 x 的 y 键中找到第二个较小的键。另一个函数也可以是 print_between(k1,k2)。此函数将打印树的所有 y 键,其值在 [k1,k2] 范围内。最后,我还想要一个 print_with_higher_priority(x) 函数,它将打印树中所有大于 x 的 x 键。

如果您有一些附加功能,请编写它们!:D

我期待看到您对这个问题的贡献!

0 投票
1 回答
286 浏览

java - 在哪里增加 Fuse ESB 路由器的最大堆?

大约每月一次,我们的路由器组件会挂起,导致流量停止。它记录“OutOfMemoryError:Java 堆空间”错误。我认为它一直在使用大约 0.5 GB 的物理内存。

看起来配置文件放在“C:\fmc-1.0.2.fuse-097\instances\esb-router-container\etc”中,但我没有找到 jvm 选项的位置。添加“-Xmx512m”或其他什么的规定位置在哪里?

我对将整个 esb 升级到最新版本并不感到兴奋。

0 投票
4 回答
5954 浏览

algorithm - 从 Max-Heap 中删除节点 A[i]

CLRS 练习:6.5-8

该操作从堆中HEAP-DELETE(A,i)删除节点中的项目。给出一个针对 n 元素最大堆及时运行的实现。iAHEAP-DELETEO(lg n)

在此处输入图像描述

我想知道算法对于输入A[10]={84,22,19,21,3,10,6,5,20}(索引从 1 开始)和A[6]=10被删除是否错误。替换最后一个节点A[6]会导致违反堆属性,忽略父值。

我为此编写了一个算法,想知道它是否工作正常或我哪里出错了?

0 投票
1 回答
550 浏览

java - Maxheap vs priorityqueue 混淆

假设我们要根据值对 hashmap 进行排序。我们实现了一个带有比较器的 priorityQueue 来做到这一点。结果,生成的 pq 是从索引 0 到结尾从最大到最小排序。

这是代码:

但是,有人说它是 maxheap,我知道 heap 只是父值大于子值,但我不明白为什么它是 maxheap?它只是在priorityQueue中实现比较器?这与堆有什么关系?

0 投票
2 回答
464 浏览

jvm - 如何为 JVM 正确分配巨大的堆空间

我试图解决一个困扰我一段时间的问题。简而言之:应该在什么基础上为占用资源的应用程序分配最大堆空间,tit 太大是否有不利影响?

我有一个用于可视化大量医疗数据的应用程序,如果并排打开多个成像卷,它可能会占用多达几 GB 的内存。缓存要查看的数据对于流畅的工作流至关重要。该软件受 Windows 工作站支持,并由引导加载程序启动,该引导加载程序分配堆大小并启动​​主应用程序。主应用程序所需的实际内存与正在查看的数据成正比,并且无法由引导加载程序确定,因为它需要读取数据,最终会消耗太多时间。

因此,为了确保 JVM 在启动期间有足够的内存,我们根据当前的设计,根据工作站的最大物理内存设置了尽可能大的 xxx。但是,这有什么缺点吗?我已经读到(来自 2008 年的一篇文章),本机进程可能会占用过多的堆空间,这可能会导致运行时出现内存错误。在分配堆空间之前,我是否还应该嗅探空闲虚拟内存或分页文件大小?你会如何处理这种情况?

哦,这是我在这些论坛上的第一篇文章。很高兴认识大家,温柔点!:)

更新:

感谢所有的答案。我不确定我的话是否正确,但我的问题源于我对将运行该软件的硬件的了解为零,但仍然希望为该软件分配尽可能多的堆空间.

如果有足够数量的可用虚拟内存,我找到了一个分配 70% 的物理内存堆的解决方案 - 否则更少。