为什么在链表中间插入是O(1)?

2024-01-03

根据维基百科关于链接列表的文章 http://en.wikipedia.org/wiki/Linked_list#Linked_lists_vs._arrays,在链表中间插入被认为是 O(1)。我认为这将是 O(n)。您是否不需要找到可能靠近列表末尾的节点?

此分析是否没有考虑节点操作的查找(尽管这是必需的)以及插入本身?

EDIT:

与数组相比,链表有几个优点。在列表的特定点插入元素是一个恒定时间操作,而在数组中插入可能需要移动一半或更多元素。

上面的说法对我来说有点误导。如果我错了请纠正我,但我认为结论应该是:

Arrays:

  • 查找插入/删除点 O(1)
  • 执行插入/删除 O(n)

链接列表:

  • 找到插入/删除点 O(n)
  • 执行插入/删除 O(1)

我认为唯一不需要找到位置的情况是,如果您保留某种指向它的指针(在某些情况下,就像头部和尾部一样)。因此,我们不能断然地说链表在插入/删除选项方面总是胜过数组。


您是对的,本文将“索引”视为单独的操作。所以插入本身是 O(1),但到达中间节点是 O(n)。

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

为什么在链表中间插入是O(1)? 的相关文章

  • 通过尾指针添加到链表,无需 3 级间接

    我正在开发一个需要实现链表的项目 在开始这个项目之前 我正在回顾创建链表的经典方法 我意识到过去我一直通过head遍历列表直到到达空指针的指针 我发现没有必要这样做 并以涉及的方式实现它tail指针 但我能想到的唯一方法是涉及三重指针或全局
  • 在 std::list 上使用擦除时的 C++ 分段

    我正在尝试使用以下命令从 C 链接列表中删除项目erase和一个列表迭代器 include
  • 如果 g(n) = sqrt(n)^sqrt(n),g(n) 的复杂度是否 = O(2^n)?

    If g n sqrt n sqrt n does the complexity of g n O 2n 任何帮助表示赞赏 比较两个指数函数时的一个有用技巧是让它们具有相同的底数 n n 2lg n n 2 n lg n Now you r
  • 如何在 d3 力定向图中突出显示(更改颜色)所有连接(邻居)节点和链接

    我在这里看到了这个例子http www d3noob org 2013 03 d3js force directed graph example basic html http www d3noob org 2013 03 d3js for
  • 在对数时间内找到未排序数组中的最小值

    是否有一种算法方法可以在对数时间 O logn 内找到未排序数组的最小值 或者只能在线性时间内实现 我不想并行 Thanks Michael 如果列表未排序 则您的搜索必须至少是线性的 每个项目你必须至少看一遍 因为任何你没看过的东西mig
  • 是否可以反转包含循环的链表?

    我正在看一些面试问题 其中一个要求反转包含循环的链表 所以假设我有一个如下所示的链接列表 F lt E V A gt B gt C gt D 然后反转列表将创建以下内容 F gt E V A lt B lt C lt D 这里的问题是 C
  • C 中链表的插入排序?

    我尝试寻找与我类似的问题 但没有找到太多帮助 我有一个此类结构的链接列表 struct PCB struct PCB next int reg1 reg2 我首先创建 10 个 PCB 结构 以这种方式链接在一起 for i 20 i lt
  • Scala 2.11 LinkedList 已弃用,我应该使用什么?

    根据the docs http www scala lang org api current index html scala collection mutable LinkedList scala collection mutable L
  • arraylist 和 linkedList 之间的区别[重复]

    这个问题在这里已经有答案了 可能的重复 何时使用 LinkedList 而不是 ArrayList https stackoverflow com questions 322715 when to use linkedlist over a
  • 如何使 Java 中的自定义泛型类型链表排序?

    我正在用 java 编写自己的泛型链表 而不是使用 java 集合链表 链表的add方法由以下代码组成 public void add T item int position Node
  • 比 O(n) 更好的范围交集算法?

    范围交集是一个简单但不平凡的问题 已经回答过两次了 查找数字范围交集 https stackoverflow com questions 224878 find number range intersection 比较日期范围 https
  • 面临减法时的算法复杂性

    我必须简化以下公式才能获得算法的时间复杂度 n 2 n 3 是否有任何适用的规则可以让我进一步简化这个表达式为更 常见 的 n 2 或类似的东西 我假设这就是结果 可能是错误的 我根本不知道如何处理这里的减法 通常 如果两个值相加 您只考虑
  • 从节点内部开始一条边

    digraph foo a label
  • Big O 用于有限、固定大小的可能值集

    这个问题 https stackoverflow com questions 12305028 java what is the best way to find first duplicate character in a string引
  • 在 C# 中创建循环链表?

    在 C 中创建循环链表的最佳方法是什么 我应该从 LinkedList 集合中派生它吗 我计划使用这个链接列表创建一个简单的地址簿来存储我的联系人 这将是一个糟糕的地址簿 但我不在乎 因为我将是唯一使用它的人 我主要只是想创建关键链接列表
  • C中的链表按升序排序

    我正在为我的 C 编程课程编写一个程序 该程序应该为我们提供使用链表的经验 作业的最后部分之一要求我们获取一个链接列表 并使用我们之前在程序中编写的前置或附加函数按升序对其进行排序 struct lnode int datum struct
  • 如何确定算法函数的复杂度?

    您如何知道算法函数对于特定操作是否需要线性 常数 对数时间 它取决于CPU周期吗 您可以通过三种方式 至少 做到这一点 在网上查找算法 看看它是如何描述其时间复杂度的 根据输入大小 自己检查算法 查看嵌套循环和递归条件等内容 以及每个循环运
  • C 链表销毁函数

    我正在尝试学习 C 和很多人一样 我对指针有点困惑 无论如何 我创建了一个递归函数来销毁我的链表 但是正如我调试的那样 当我从函数返回时 列表的头部不应该为空 所以我猜这是对指针的一些基本误解 这是函数 void destroy struc
  • 为什么 LinkedList 通常比 List 慢?

    我开始在我的一些 C 算法中使用一些 LinkedList 而不是列表 希望能够加快速度 然而 我注意到他们只是感觉更慢 像任何优秀的开发人员一样 我认为我应该尽职调查并验证我的感受 所以我决定对一些简单的循环进行基准测试 我认为用一些随机
  • 使用 for 循环创建链表

    这是我的结构 struct ListItem int data struct ListItem next 假设链表的第一个节点的 data 0 我想编写一个 for 循环来创建大小为 5 的链表 但我不知道如何工作 我尝试了以下方法 int

随机推荐

  • 如何将 REGEX 匹配添加到我的 J2ME 项目?

    这个问题几乎概括了这一点 只想对 J2ME 中的字符串运行正则表达式匹配 JRegex 不会在 CLDC 设备上运行 试试这个 code google com p regexp me http code google com p regex
  • python 2.7中对数对数尺度的最佳拟合线

    这是以对数刻度表示的网络 IP 频率排名图 完成这部分后 我尝试使用以下方法在对数刻度上绘制最佳拟合线Python 2 7 我必须使用 matplotlib 的 symlog 轴刻度 否则某些值无法正确显示 并且某些值会被隐藏 我正在绘制的
  • 将自定义对象从 C# 传递到 Powershell

    我有一个 C 类 应该通过向其传递 Log 对象来执行 Powershell 脚本 日志完全用 C 编写 应该在 C 代码和 Powershell 之间共享 以实现通用日志记录 有人可以告诉我如何将自定义对象从 C 传递到 Powershe
  • iOS4 MPMoviePlayerController 嵌入

    我当前正在使用 MPMoviePlayerController 在 iPhone 内播放视频 现在我希望在视图的一小部分区域 而不是全屏 播放该视频 我认为有一个框架方法可以做到这一点 但我在某处找不到所需的教程 你有遇到过吗 那太好了 U
  • 在 Slack 中创建并获取新通道传入 Webhook

    我刚刚使用channels create 方法通过Slack Api 创建了一个通道 如何添加传入的 Webhook 并以编程方式获取 URL 我还有其他工具可以进一步使用它 您无法以编程方式创建新的传入 Webhook 但您也不必这样做
  • gcc 中模板的非延迟静态成员初始化?

    gcc 对静态成员初始化时序有任何保证 特别是对于模板类吗 我想知道我是否可以获得静态成员的硬保证 PWrap T
  • 如何在 .NET 中使用 Saxon-HE 9.8 使用 XSLT 3.0

    我使用的是 Win7 并将 VSCODE 项目设置为 NET Framework 4 然后下载 SaxonHE9 8 0 7N setup exe 并安装 然后将 saxon9he api dll 引用到 C 项目并using Saxon
  • 为什么扩展切片不会反转列表?

    我正在 python 中切片列表 无法解释一些结果 以下两项对我来说似乎很自然 gt gt gt 0 1 2 3 4 5 1 4 1 1 2 3 gt gt gt 0 1 2 3 4 5 1 5 4 3 2 1 0 然而 gt gt gt
  • 数学解释为什么 Decimal 到 Double 的转换被破坏以及 Decimal.GetHashCode 分隔相等的实例

    我不确定这种表述 Stack Overflow 问题的非标准方式是好是坏 但这里是 代码的最佳 数学或其他技术 解释是什么 static void Main decimal arr 42m 42 0m 42 00m 42 000m 42 0
  • git svn status - 显示未提交到 svn 的更改

    我正在 git svn 中寻找一个命令 该命令将显示我已提交到 git 存储库但尚未提交到中央 svn 存储库的更改 我正在寻找像 svn status 一样工作的东西 但我正在使用 git svn 不幸的是 git svn status不
  • 如何使用 FastAPI 获取 Jinja2 模板中更新的项目列表?

    我正在我的博客上构建一个评论系统 并且我正在呈现这样的现有评论 for comment in comments div class pt 4 div class bg white rounded lg p 3 flex flex col j
  • LARAVEL - 显示存储文件夹中的图像

    我是 Laravel 新手 想知道是否有人可以帮助我完成简单的图像上传 我有一个表单 允许用户创建个人资料并在此过程中上传其个人资料和头像 这一切都很完美 这是我的控制器的代码 if request gt hasFile avatar fi
  • 与任何内容都不匹配的 Glob 会扩展到自身,而不是什么都没有

    我想迭代特殊类型文件夹中的文件 例如 test 所以我写了一些脚本名称for loop for f in test do echo This is f f done After chmod x for loop 我可以开始它 for loo
  • 重新索引不填充 NaN

    我有一个系列 index pd MultiIndex from tuples bar one bar two baz one baz two foo one foo two qux one qux two names first secon
  • 如何使用 DDay.iCal 在 iCal Feed 中设置时区?

    我正在使用创建 iCal feedDDay iCal http www ddaysoftware com Pages Projects DDay iCal 它有效 但我不知道如何设置提要的时区 这是基本代码 iCalendar iCal n
  • FMDB 和加密

    我正在使用 FMDB 来处理 sqlite 并且我希望避免对 SQLCipher 的依赖 如何简单地利用 iOS 内置的 DataProtection 功能 这可能吗 唯一的要求是在手机被盗时保护数据 如果手机使用 PIN 码解锁 则用户可
  • HTML5 画布:调整图像大小

    我正在尝试将图像放置在画布上而不调整其大小 我认为 drawImage img x y 可以解决问题 但它会拉伸图像以填充画布 另外 向 drawImage img x y width height 提供图像的尺寸似乎不起作用 这是我的代码
  • 如何从Openfire获取群聊的离线消息

    有什么办法可以进入xmpp我得到的离线消息MultiUserChat 当我的用户登录并加入房间时 我想要实现群聊 like WhatsApp 还有其他方法可以实现这个请建议 提前致谢 至少在ejjaberd当您进入聊天组时 您必须输入您的最
  • 使用 Jsoup 和适当的 cookie 登录 Facebook

    我目前正在尝试自动废弃我自己的主页以及我登录 Facebook 时可以访问的其他可能页面 但是 在使用下面的代码并设置 cookie 后 我似乎无法 登录 Connection Response res Jsoup connect http
  • 为什么在链表中间插入是O(1)?

    根据维基百科关于链接列表的文章 http en wikipedia org wiki Linked list Linked lists vs arrays 在链表中间插入被认为是 O 1 我认为这将是 O n 您是否不需要找到可能靠近列表末