查找堆中元素的位置

2024-03-28

考虑以下元素列表。

h = [38, 203, 1, 45, 39, 10, 34, 90, 10, 2, 100, 1]

如果将其放入基于数组的堆中,它将按以下方式查找。

import heapq

heapq.heapify(h)
# now we have a heap that looks like this
# [1, 2, 1, 10, 39, 10, 34, 90, 45, 203, 100, 38]

找出位置的最佳方法是什么39在这个堆里?

找出答案的一种方法是从堆中弹出项目,直到返回 39,这样,如果我们跟踪从堆中弹出项目的次数,我们就知道它的位置。然而,当我们修改堆本身时,这不是很有效。

有更好的方法来解决问题吗?


从注释中的澄清来看,您似乎想将堆视为完全排序的数据结构,并查找小于或大于特定元素的元素数量。

堆并不是为支持此操作而设计的。如果你想做这种事情,你应该使用这样的数据结构:is专为它而设计。例如,sortedcontainers.SortedList http://www.grantjenks.com/docs/sortedcontainers/sortedlist.html:

import sortedcontainers

l = sortedcontainers.SortedList([38, 203, 1, 45, 39, 10, 34, 90, 10, 2, 100, 1])

index = l.index(39)

如果你真的想使用堆,你可以运行贪心搜索 https://stackoverflow.com/questions/31495693/creating-a-sorted-array-from-the-smallest-log-n-tems-in-a-heap堆中,并在找到要查找的项目时停止。对于低优先级的项目来说,这将是非常昂贵的;在最坏的情况下,它将具有完整排序的时间复杂度,并且常数因子更差。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

查找堆中元素的位置 的相关文章

  • 如何使用 pandas 选择所有非 NaN 列和非 NaN 最后一列?

    如果标题有点令人困惑 请原谅我 假设我有test h5 下面是使用读取该文件的结果df read hdf test h5 testdata 0 1 2 3 4 5 6 0 123 444 111 321 NaN NaN NaN 1 12 2
  • Pyenv 无法在 Cygwin 上安装 python: ModuleNotFoundError: No module named '_ctypes'

    我正在尝试设置 Cygwin 环境以使用 pyenv 来管理 python 版本 我没有管理员权限 所以我使用以下命令运行设置 no admin flag 我使用 Cygwin 包管理器应用程序解决了一些依赖关系 但我被困在了这一点上 Mo
  • 使用信号时出现 django TransactionManagementError

    我有一个与 django 的用户和 UserInfo 一对一的字段 我想订阅用户模型上的 post save 回调函数 以便我也可以保存 UserInfo receiver post save sender User def saveUse
  • 如何在Python中的BeautifulSoup4中使用.next_sibling时忽略空行

    由于我想删除 html 网站中重复的占位符 因此我使用 BeautifulSoup 的 next sibling 运算符 只要重复项位于同一行 就可以正常工作 参见数据 但有时它们之间有一个空行 所以我希望 next sibling 忽略它
  • 有条件填写 pandas 数据框

    我有一个数据框df列中包含浮点值A 我想添加另一列B这样 B 0 A 0 for i gt 0 B i if np isnan A i then A i else Step3 B i if abs B i 1 A i B i 1 lt 0
  • 通过鼻子测试检查某个函数是否发出警告

    我正在使用编写单元测试nose http somethingaboutorange com mrl projects nose 0 11 2 我想检查函数是否引发警告 该函数使用warnings warn 这是很容易就能做到的事情吗 def
  • Python 使用 M2Crypto 通过 S/MIME 对消息进行签名

    我现在花了几个小时 但找不到我的错误 我想要一个简单的例程来创建 S MIME 签名消息 稍后可以与 smtplib 一起使用 这是我到目前为止所拥有的 usr bin python2 7 coding utf 8 from future
  • 十六进制数的按位异或

    我们如何在 Python 中对十六进制数进行异或 例如 我想要异或 ABCD and 12EF 答案应该是 B922 我使用了下面的代码 但它给出了错误的结果 xor two strings of different lengths def
  • 绘制“plot”而不是“scatter”时,图例选择会中断

    再会 这个问题是后续问题为什么图例选取仅适用于 ax twinx 而不适用于 ax https stackoverflow com q 60167378 9282844 下面提供的最小代码分别绘制了两条曲线ax1 and ax2 ax1 t
  • 加密成本高,解密成本低

    我希望该用户 攻击者加密数据并发送给服务器 现在我想要一种与标准算法完全相反的算法 使用快 难以解密 即很难使用服务器发送的密钥来加密密码等数据 以防止随机攻击 但很容易解密这样服务器在验证用户时消耗的时间非常少 但是对于攻击者来说 每次使
  • 使用 Python 的文本中的词频但忽略停用词

    这给了我文本中单词的频率 fullWords re findall r w allText d defaultdict int for word in fullWords d word 1 finalFreq sorted d iterit
  • 理解@property装饰器和继承[重复]

    这个问题在这里已经有答案了 这里是 Python 3 以防万一它很重要 我试图正确理解如何实现继承 property使用 我已经搜索了 StackOverflow 并阅读了大约 20 个类似的问题 但无济于事 因为他们试图解决的问题略有不同
  • Selenium:等到 WebElement 中的文本发生变化

    我在用着selenium使用Python 2 7 从网页上的搜索框检索内容 搜索框动态检索结果并在框本身中显示结果 from selenium import webdriver from selenium webdriver common
  • 向 Python 2.6 添加 SSL 支持

    我尝试使用sslPython 2 6 中的模块 但我被告知它不可用 安装OpenSSL后 我重新编译2 6 但问题仍然存在 有什么建议么 您安装了 OpenSSL 开发库吗 我必须安装openssl devel例如 在 CentOS 上 在
  • InvalidArgumentException:消息:无效参数:“using”必须是字符串

    我对 python 很陌生 试图创建可重用的代码 当我尝试通过传递 Login 类下使用的所有参数来调用 test main py 中的 Login 类和函数 login user 时 我收到错误 InvalidArgumentExcept
  • 有没有任何方法可以使用 openpyxl 获取 .xlsx 工作表中存在的行数和列数?

    有没有任何方法可以使用 openpyxl 获取 xlsx 工作表中存在的行数和列数 在xlrd中 sheet ncols sheet nrows 将给出列数和行数 openpyxl中有这样的方法吗 给定一个变量sheet 可以通过以下方式之
  • 网页抓取 - 如何识别网页上的主要内容

    给定一个新闻文章网页 来自任何主要新闻来源 例如时报或彭博社 我想识别该页面上的主要文章内容 并丢弃其他杂项元素 例如广告 菜单 侧边栏 用户评论 在大多数主要新闻网站上都可以使用的通用方法是什么 有哪些好的数据挖掘工具或库 最好是基于Py
  • Jupyter Notebook 中的多处理与线程

    我试图测试这个例子here https ipywidgets readthedocs io en stable examples Widget 20Asynchronous html将其从线程更改为多处理 在 jupyter Noteboo
  • Selenium Python 使用代理运行浏览器[重复]

    这个问题在这里已经有答案了 我正在尝试编写一个非常简单的脚本 该脚本从 txt 文件获取代理 不需要身份验证 并用它打开浏览器 然后沿着代理列表循环此操作一定次数 我确实知道如何打开 txt 文件并使用它 我的主要问题是让代理正常工作 我见
  • Shap - 颜色条不显示在摘要图中

    显示summary plot时 不显示颜色条 shap summary plot shap values X train 我尝试过改变plot size 当绘图较高时 会出现颜色条 但它非常小 看起来不应该 shap summary plo

随机推荐

  • Orchard CMS - 配置基本 URL

    我使用 localhost frankgiotto 的基本 URL 在我的开发计算机上安装了最新版本的 Orchard 然后我将网站移至 www frankgiotto com 并在设置中更新了我的基本 URL 网站运行完美 我喜欢它的一切
  • 了解 intel 汇编中的 %rip 寄存器

    关于以下小代码 在另一篇关于结构大小和正确对齐数据的可能性的文章中对此进行了说明 struct char Data1 short Data2 int Data3 char Data4 x unsigned fun void x Data1
  • 想要计算列中满足条件的值的数量

    我正在尝试计算列中满足特定条件 例如 大于 0 75 的值的数量 我的列由 2000 多个小数组成 这是我尝试过的 a len fs c np zeros a for i in fs 0 a if i gt 0 75 print 1 eli
  • Django REST Framework Swagger - 身份验证错误

    我按照说明进行操作在文档中 http django rest swagger readthedocs io en latest 所以这是我的观点 from rest framework decorators import api view
  • 在 Android 中获取 WiFi 信号强度

    我可以使用以下代码获取以 dBm 为单位的 WiFi 信号电平 for ScanResult result wifiScanResultList int signalLevel result level 它给出负值 当我们看到默认的系统 W
  • Android 中的微调器出现错误

    我正在使用新样式的 Spinner Base Widget AppCompat Spinner Underlined 当我选择选项时 我可以看到下划线 并且该线以强调色显示 问题是我找不到一种方法来显示带有红色下划线的错误 例如谷歌对其所有
  • 在python中导入外部“.txt”文件

    我正在尝试导入包含大约 10 个单词的列表的文本 import words txt 那不行 无论如何 我可以在不显示此内容的情况下导入文件吗 Traceback most recent call last File D python p1
  • 在 prestashop 管理的编辑产品页面添加一个字段

    我在 prestashop 数据库的产品表中添加了一个字段 mystock 现在我想在编辑产品页面中显示 编辑此字段 产品更新时也会更新 这个适用于我的 prestashop 1 5 4 将文件 Product php 添加到 overri
  • 通过 R 中的因子向量化 cumsum

    我正在尝试在一个非常大的数据帧 约 220 万行 中创建一个列 用于计算每个因子级别的 1 的累积和 并在达到新的因子级别时重置 下面是一些与我自己的类似的基本数据 itemcode lt c a1 a1 a1 a1 a1 a2 a2 a3
  • 查找 boost multi index 标签到索引和索引数量

    我有一个模板类 CrMultiIndex 它接收 boost 多索引 GlobalHash 的定义作为模板参数 I need 根据使用的索引向我的模板类添加统计信息 所以我需要一种方法在初始化时使用现有索引的数量调整向量 m StatsBy
  • iOS10 SDK什么时候设置视图帧大小?

    多年来 我一直在 Swift 和 ObjC 中使用这种技术来制作圆形视图 view layer cornerRadius view frame size width 2 view clipsToBounds true 当 Storyboar
  • 串行版本 UID 有何用途? [复制]

    这个问题在这里已经有答案了 我正在创建一个 Java 应用程序 当创建一个与 ADT 一起使用的接口时 它发现需要将一个随机数初始化为 ID 号 public class StackFullException extends Runtime
  • DomIcon 的集群

    我正在尝试制作集群H map DomMarker 正在使用H map DomIcon与 HTML 代码 但原生的 Here Map 聚类不起作用 仅当我使用简单的H map Icon 但由于这被渲染为canvas图层 我无法使用自己的标记
  • MFC:如何捕获Web浏览器控件中的链接单击事件?

    我有一个带有 Web 控件的 MFC 应用程序 单击可单击链接时 它将使用 IE 打开 而不是默认浏览器 问题 有没有办法强制使用默认浏览器打开它 如果没有 我如何捕获链接单击事件 以便稍后可以操纵单击事件 谢谢 不 据我所知还没有 查看有
  • 在 Mathematica 中导入 Google Sketchup 模型

    Google 的 Sketchup 是一个漂亮 简单的 3D 对象建模器 此外 谷歌还拥有巨大的3D 对象仓库 http sketchup google com 3dwarehouse 因此 如果您在这方面不是特别有天赋 实际上您不必自己做
  • R 包“partykit”在 ctree_control 中未使用参数

    我想使用 partykit 包通过 ctree 和 cforest 构建分类树和森林 由于我的数据集包含 50000 行和 30 列 因此我想将 minsplit 设置为 150 将 minbucket 设置为 50 不幸的是 当我输入我的
  • 与 xgboost 并行线程?

    根据其文档 xgboost 有一个 n jobs 参数 但是 当我尝试设置 n jobs 时 出现此错误 TypeError init got an unexpected keyword argument n jobs 其他一些参数 如 r
  • OpenSSL 错误 - 无法获取本地颁发者证书

    我有一个简单的链设置 在这种情况下可以成功验证 openssl version OpenSSL 1 0 2m 2 Nov 2017 openssl verify CAfile chain pem cert pem cert pem OK 但
  • ember 数据验证的标准模式是什么? (无效状态,变成无效……)

    我已经为此苦苦挣扎了一段时间 让我们看看是否有人可以帮助我 尽管自述文件中没有明确说明 但 ember data 提供了一定程度的验证支持 您可以在代码和文档的某些部分看到 https github com emberjs data blo
  • 查找堆中元素的位置

    考虑以下元素列表 h 38 203 1 45 39 10 34 90 10 2 100 1 如果将其放入基于数组的堆中 它将按以下方式查找 import heapq heapq heapify h now we have a heap th