为什么在 collections.deque 中间添加或删除比在那里查找慢?

2024-01-13

This wiki.python.org https://wiki.python.org/moin/TimeComplexity关于某些数据结构的算法复杂性的页面说以下内容collections.deque object:

deque(双端队列)在内部表示为双向链表。 (好吧,为了提高效率,使用数组列表而不是对象列表。)两端都是可访问的,但即使查看中间也很慢,并且从中间添加或删除更慢。

两个问题:

1)添加到 a 的中间deque甚至可能吗?我没有看到任何方法可以做到这一点API https://docs.python.org/2/library/collections.html#collections.deque.

2)为什么删除(或添加)比中间的查找慢deque?它是一个双向链表,因此一旦找到要添加的对象,添加/删除应该是一个恒定时间的操作。


  1. 可以使用以下命令删除项目remove()方法或del关键词。无法插入项目。 (API 文档中没有出现的插入的唯一可能方法是切片分配,这在deque.)
  2. 因为,正如描述所说,它实际上是一个双向链表的数组。因此,插入或删除内容可能需要将元素从一个数组移动到另一个数组。 (我没有看过实现,但我知道deque在查找元素时使用步幅技术,并且我假设所使用的数组的大小与步幅长度相同,即 62。)您必须以常规方式移动大量内存list删除项目时也是如此,但至少所有内容都在一个块中,并且可以有效地移动。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么在 collections.deque 中间添加或删除比在那里查找慢? 的相关文章

随机推荐

  • FiPy 中的固定通量边界条件

    我对此主题有一个后续问题FyPi 中的耦合非线性方程 https stackoverflow com questions 62640821 coupled non linear equations in fypi 当对所有变量使用诺依曼边界
  • 带镀铬的背景中心(错误)

    我有一张居中的背景图像 Chrome 显示偏移一个像素 CSS container background url images header jpg no repeat scroll 50 transparent width 100 hea
  • EF CORE 中的 DbFunctions.TruncateTime LINQ 等效项

    我的 net 应用程序中有以下功能正常的 LINQ public ActionResult Index Dictionary
  • 如何在 SQL Server 中创建参数化 XPath 查询?

    我正在尝试在 SQL Server 中编写一个参数化查询 该查询使用参数值作为 XPath 的一部分 但它似乎没有按照我期望的方式工作 这是我的样本 create table example xmltest xml declare Lang
  • 如何添加本地项目(不是 jar)作为 Maven 项目的依赖项

    我有两个 Maven 项目 我已将它们作为两个模块添加到一个 Intellij Idea 的项目中 项目 B 依赖于项目 A 以下是其 pom xml 文件的简化版本 项目A
  • Android 相机 - 预览尺寸、图片尺寸、裁剪和扭曲

    我的应用程序需要以纵向模式捕获一些给定尺寸 比如说宽x高 的图片 一般情况下 相机不支持我想要的尺寸 宽x高 因此我需要裁剪拍摄的图片以符合我的规格 这个看似简单的程序让我对预览和图片尺寸和格式之间 良好 对应的问题感到疯狂 让我解释 我需
  • android.database.sqlite.SQLiteException:无法将 Android 短信数据库的数据库从版本 58 降级到 55

    当我的 Android 应用程序尝试读取 Android 短信数据库时 我遇到此崩溃 读取android短信数据库的代码类似于以下代码片段 String SMS URI content sms Uri uri Uri parse SMS U
  • 如何在 Windows 上用 C/C++ 为文件预分配空间?

    我正在向使用纯 C 函数的现有代码库添加一些功能 fopen fwrite fclose 将数据写入文件 不幸的是 我无法更改文件 i o 的实际机制 但我必须为文件预先分配空间以避免碎片 这会影响读取期间的性能 有没有比实际将零或随机数据
  • WebRTC 视频不显示

    我正在创建一对一的 webrtc 视频聊天室 但此代码不起作用 我想知道为什么 function hasUserMedia navigator getUserMedia navigator getUserMedia navigator we
  • 从 Android 设备发送 HTTPS/HTTP POST 时出现 UnknownHostException

    我正在尝试创建一个到 Google 服务器的 HTTP POST 来获取 ClientLogin Auth 如所述here http code google com android c2dm index html push 这篇文章的源代码
  • 视图中的 ASP.NET Web Api [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想在这种情况下通过 webapi 创建一个登录页面 我不想使用令牌 但视图应该是安全的 不是直接在 URL 中调用 如果用户是管理员
  • CSS 替代行 - 隐藏一些行

    我正在尝试设计表格 使每一行都有不同的颜色 奇数 偶数 我有以下 CSS woo tr nth child even td background color f0f9ff woo tr nth child odd td background
  • 两阶段查找 - 需要解释

    编译器使用两阶段查找来编译模板类是什么意思 模板被编译 至少 两次 如果没有实例化 则会检查模板代码本身的语法 例如 任何语法错误 例如 etc 在实例化时 当确切类型已知时 将再次检查模板代码以确保所有调用对于该特定类型都有效 例如 模板
  • httr 有时会将 URL 中的“%”替换为“%25”

    使用时httr GET 在某些查询中它会替换 具有安全代表 25 但在其他查询中则不然 我找不到任何规则可以实现这种情况 我正在使用 httr 1 4 1 示例查询在哪里 被替换 请注意错误代码 并且输入的 URL 与返回的响应对象中的 U
  • Google Chromecast SDK 在后台拆解

    使用 iOS Sender API 框架 当我的应用程序进入后台时 SDK 会断开所有连接 并且我无法启动更多媒体 直到应用程序返回前台 我的应用程序播放音频并允许在后台运行和流式传输 是否有一个选项可以告诉 Googlecast 框架保持
  • 从 C# 中的 Richtextbox 中选择文本

    我想选择 RichTextBox 文本的最后一个 和 之间的文本 我有下一个代码 但 LastIndexOf 函数有错误 我不知道如何修复它 有人可以给我一些帮助吗 private void highlightText mRtbxOpera
  • 我应该如何将 Java 代码转换为 C# 代码?

    我正在将 Java 库移植到 C 我使用的是 Visual Studio 2008 因此没有已停止使用的 Microsoft Java 语言转换助手程序 JLCA 我的方法是创建一个与 Java 库类似的项目结构的新解决方案 然后将 jav
  • 单元测试 ASP.NET MVC 重定向

    如何对 MVC 重定向进行单元测试 public ActionResult Create Product product productTask Save product return RedirectToAction Success pu
  • 我可以将本机依赖项放在子文件夹中吗

    当我发布 dotnet core 项目时 它生成了一个文件夹 其中包含数百个框架和本机运行时文件 我知道这些文件是使一切正常工作所必需的 但是我可以将它们移到子文件夹中并仍然让我的应用程序运行吗 例如 MYAppFolder MyApp e
  • 为什么在 collections.deque 中间添加或删除比在那里查找慢?

    This wiki python org https wiki python org moin TimeComplexity关于某些数据结构的算法复杂性的页面说以下内容collections deque object deque 双端队列