问题标签 [heapq]

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 投票
1 回答
140 浏览

python-3.x - 为什么 heapq.heapify 这么快?

我试图重新实现 heapify 方法,以便使用_siftup_siftdown更新或删除堆中的任何节点并保持 O(log(n)) 的时间复杂度。

我做了一些努力来优化我的代码,但事实证明它们比heapq.heapify (就所花费的总时间而言)更糟糕。所以我决定研究源代码。并将复制的代码与模块的代码进行比较。

而且我发现总是cp3 - cp2>=cp2 - cp1并且不一样, 即使两者都相同,heapify也需要更多的时间。heapq.heaify 在某些情况下heapify需要 3 秒和heapq.heapify0.1 秒

heapq.heapfy 模块的执行速度比相同的 heapify 更快,它们仅通过导入有所不同。

请告诉我原因,如果我犯了一些愚蠢的错误,我很抱歉。

0 投票
0 回答
226 浏览

python - 使用 heapq 为 dijkstra 最短路径算法列出可用的最短路径

我得到了一项任务,我需要在我的 python 代码中应用 Dijkstra 的最短路径算法。假设我们涉及几个城市。我需要找到路线最短的那个。总之,任务是:

  • 找到最短的路线。
  • 列出所有可能的路径。

我成功地找到了城市中的最短路径,但我不知道如何使用 heapq 列出所有可能的路径。谁能帮我?

这是我为更好地理解图表而提供的图表:

我构建的图表

编码:

输出:

如果这篇文章看起来不合适,我深表歉意,因为这是我在这里发布的第一个问题。

非常感谢您的帮助。谢谢你。

0 投票
2 回答
39 浏览

python - 为什么 heappush 采用 3 个参数?

为什么 heappush 采用 3 个参数 arr[i].data、i 和 arr[i]。为什么取i为参数 一般只取一个参数 是合并k个排序的链表的代码

0 投票
1 回答
100 浏览

python - 为什么 PyCharm 调试器因“ImportError:无法导入名称‘heappush’”而崩溃

我在 PyCharm 中有一个项目,在我添加几行代码后,它的调试器开始崩溃。我删除了所有代码并在文件中留下了一个简单的打印。

代码位于文件夹中:“heapq\test_heapq.py”,如屏幕截图 1 所示。

我得到的错误是“ImportError: cannot import name 'heappush'”,如屏幕截图 2 所示。

是什么导致了这个错误?

代码在项目树中的位置

ImportError 堆栈跟踪

0 投票
0 回答
31 浏览

python - 如何在 heappush 时检索 heapq 中元素的位置?

为了使用 _siftup/_siftdown 有效地修改元素的优先级,必须知道元素在列表中的位置(索引)。既然 heappush 不返回这个信息,那怎么实现呢?

0 投票
2 回答
600 浏览

python - python3中使用heapq模块合并k个排序列表

问题:- 合并 k 个排序列表。

我想使用最小堆来解决这个问题,它可以用 python 中的 heapq 模块来实现。下面是函数的示例代码...

但问题是python解释器引发了一个错误:

TypeError:'ListNode'和'ListNode'的实例之间不支持'<' heapq.heappush(listwithoutNone,(node.val, node))

所以,我想使用 node.val 作为 minheap 节点元素,因为我正在传递一个元组,所以我应该在代码中做些什么更改,以便 minheap 将使用 node.val 堆化堆。

提前致谢。

0 投票
0 回答
28 浏览

python-3.x - python中默认的min()方法是否使用堆二叉树实现来查找列表中的最小值?

嗨,我有一个清单u = [2,45,0,56,78,13]

我们可以使用min() 方法找到列表中的最小值。我正在通过堆二叉树。

python有一个模块heapq,有一个方法heapq.nsmallest()可以帮助在堆二叉树中找到n个最小的数。

python中的默认min()方法是否使用堆二叉树来查找列表中的最小值?

0 投票
1 回答
39 浏览

python - 使用 heapq 从复杂的嵌套字典中排序和选择

我有以下嵌套字典:

我想使用 heapq 根据'hl_value'进行排序,并为特定日期选择最小的 2 个子字典。例如,最终输出应如下所示:

我尝试使用以下代码,但似乎不起作用:

0 投票
0 回答
59 浏览

python - 如何用节点中的每个值可视化堆二叉树?

我有一个示例数据集:

枚举listt后:

我想在一个节点中可视化这个堆以便于理解。

示例图片:

例子

0 投票
1 回答
36 浏览

python - 怪异的Python堆:heappop()第一次输出

第一个 heappop() 不是数组的最小值,而它是第一个索引。

之后, heappop() 工作

我想也许是heappop()之后的自动heapify()?检查文件但一无所获

顺便说一句,如果你一开始 heapify() a , heappop() 效果很好。如果对此有任何解释,将不胜感激。谢谢!