问题标签 [minmax-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 投票
2 回答
237 浏览

scala - Scala 的最小最大优先级队列

我正在搜索一个MaxMinPriorityQueue类似番石榴的图书馆。因为我无法使用它,因为当我添加这样的依赖项时 sbt 失败:

它似乎没有为 scala 构建,因为它可以找到:

搜索了一段时间后,我发现没有类似的 Scala 数据结构。有人知道 scala 的 MinMaxPriorityQueue 的任何实现吗?

谢谢。

0 投票
1 回答
589 浏览

algorithm - Heapsort: Build max heap 过程解释

我正在尝试理解使用堆排序对数组进行排序的代码(参考 - https://www.sanfoundry.com/java-program-implement-heap-sort/

“maxheap”函数使用此计算来获取节点的左右子节点(在多个不同的示例/站点中使用相同)

int 左 = 2*i;
整数右 = 2*i + 1;

以上的逻辑/推理是什么?

此外,在 heapify 函数中,使用 i = N/2 -> 0 调用 maxheap fn
(例如,而不是 i = 0 到 N -1。)关于为什么这样做的任何想法?

0 投票
1 回答
74 浏览

c++ - 如何修复最小堆插入/提取函数中的错误?

我这样编译:

实施失败 test2 “断言失败:(array[i] == i), function test2, file test.cpp, line ... Abort trap: 6 ”。test2 正在创建一个大小为 10000 的数组(整数从 0 到 10000 以随机顺序排列)并使用 heapsort 和 MinHeap 类对其进行排序。

100% 堆排序正确实现。我已经完成了主要 MinHeap 函数的逻辑(插入 -> bubble_up , extract -> bubble_down),但找不到错误。

测试.cpp

最小堆.hpp

最小堆.cpp

0 投票
2 回答
605 浏览

heap - 在二进制最大堆中,父节点不是比其子节点大吗?

我在这个问题上弄错了,因为问题在 Binary Max Heap 中说:“如果 y 是节点 x 的右子树中的一个节点,那么 y.key >= x.key。” 我附上了下面问题的截图。

二进制最大堆问题

如果 y 是节点 x 的子树中的一个节点,我认为 x.key 比 y.key 大,因为根据最大堆属性,父节点大于其子节点。我想知道我是否遗漏了什么。提前致谢。

0 投票
1 回答
56 浏览

javascript - 如何按字母顺序调整我的优先级队列?我已经获得了频率,我怎样才能把那个词和这个堆按字母顺序进行比较?

我的问题是正确排序的逻辑——按字母顺序。我只是不知道我可以使用什么技术来保持最多位于顶部的值以及它们是否具有相同的出现并按字母顺序返回列表。

输入:["i", "love", "leetcode", "i", "love", "coding"], k = 2 输出:["i", "love"] 解释:"i" and "love "是最常用的两个词。请注意,由于字母顺序较低,“i”出现在“love”之前。

0 投票
1 回答
75 浏览

python - max_heapify 遍历堆以获取下一级节点的迭代方式

我正在尝试编写一个迭代控制循环而不是递归,因为它更有效有人可以告诉我我的代码是否有意义:递归版本:

迭代版本(我认为这是错误的??)

我能得到关于迭代版本有什么问题的建议吗

0 投票
1 回答
110 浏览

c++ - 您可以将 NULL 指针变量分配给指针变量吗?

所以我正在研究带有 C++ 链接表示的最大堆树。由于我无法上传代码,因为它很长,但是在调试时我意识到执行将停止在将 Null 指针分配给指针的表达式处。例如

这种操作经常发生在我的代码中删除方法,所以我也想知道如果我多次分配 NULL 变量,它会导致错误。例如继续上面的例子,

我试图弄清楚 NULL 指针的行为方式,但我不太明白。请你帮助我好吗?

0 投票
1 回答
199 浏览

c - 使用 heapfy 将最大堆转换为最小堆

我正在尝试将一个最大堆堆成一个最小堆。出于某种原因,我没有得到我期望的结果。

我已经建立了我的最大堆,它的数组内容按预期显示:

60 50 30 20 40 10

当尝试 heapfy 上述数组并将其转换为最小堆时,所需的结果是:

10 20 30 60 50 40

但是,我得到的结果是:

10 20 60 50 40 30

这是我的功能:

任何见解都会非常有帮助。

0 投票
1 回答
51 浏览

c++ - C ++中优先级队列自定义排序中的异常

我浏览了几篇关于 C++ 中自定义排序优先级队列的 StackOverflow 和 Codeforces 文章。默认情况下,C++ 实现是 MaxHeap ,因此它会以降序输出元素。我的微调添加greater<int>会上升。我使用自己的比较器功能进行了尝试,如下所示:

这给出了预期的输出:1 5 8

但是,如果我将其更改为:

输出变为:8 1 5

我不知何故无法得到这个,非常感谢任何帮助。

0 投票
0 回答
42 浏览

java - 设计一种使用堆树实现字典的算法

您好,我正在尝试构建一个 maxheap,但我被困在如何使用字符串而不是数字我想在每个节点中放入 2 个字符串(单词及其定义),例如在我要添加的第一个节点中(“Apple :fruit 通常是圆形的红色") 我想按字母顺序排列它们。那么我应该做一个对象数组还是字符串?我如何在这段代码中使用?