Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >不同数据结构的大O运行时间

不同数据结构的大O运行时间
EN

Stack Overflow用户
提问于 2011-08-12 05:50:27
回答 4查看 4.2K关注 0票数 3

我试着想出以下数据结构的Big运行时间。他们是对的吗?

将n个整数插入初始空的AVL树(最佳情况) n)

  • Inserting n整数到初始空的AVL树(最坏情况)O(日志n)

  • Inserting n整数到不强制结构属性(最佳情况)的初始空二进制搜索树中) O(log n)

  • Inserting n整数到不强制结构属性(最坏情况)的初始空二进制搜索树中(最坏情况) O(n)

另外,解释它们为什么不正确也是有帮助的。

EN

回答 4

Stack Overflow用户

发布于 2011-08-12 06:08:13

我假设您需要插入所有元素的总时间:

(1)对于AVL树,在最佳情况下,永远不需要在根以下,即所有元素都等于根,因此它将是O(n)。不需要再加深超过一步,不管树的大小。每个元素O(1)。

(2) 树的最坏情况:向树插入n个整数是O(nlogn)。每一步都是O(log(T)),其中T是该时刻的大小。O(log1) + O (log2) + ... + O(logn) = O(log1 + log2 + ... + logn) = O(log(1*...*n)) = O(nlogn)。因此,O(nlogn).O(logn)每一个元素

(3) no结构强制,最佳情况,仍然O(n),同样的理由(1)。在最好的情况下,您添加的所有元素都是根,因此您永远不需要在树中下降,不管它的大小如何。每个元素O(1)。

(4)对于no结构强制,最坏情况:正如在其他答案中所说的,找到每个元素的位置是O(n),所以总的来说,O(n^2)的复杂度将是最坏的。每个元素O(n)。

票数 3
EN

Stack Overflow用户

发布于 2011-08-12 05:57:34

是的,你是对的,如果你用n乘以所有的东西,你的运行时间是一个元素。

票数 1
EN

Stack Overflow用户

发布于 2011-08-12 05:59:15

插入n整数如何导致O(logn)的大O。这没有任何意义。当然,读取整数本身至少需要O(n)

因此,对于不平衡的BST示例,最坏的情况是插入一个排序的数字列表(如1,2,3,4 )。插入1需要0的时间。插入2需要~1时间。插入3需要~2时间。等等,这相当于1+2+3+...+n = O(n^2)

同样,在最好的情况下,每次后续插入都需要log(i)时间。所以总运行时间是log(1)+log(2)+log(3)+...+log(n)。这一评估结果并不是立即显而易见的。但是,如果你知道一些微积分,你可以看到,这是(几乎)梯形规则逼近的积分,从1到n,这大约是nlogn - n = O(nlogn)

我相信你可以对AVL树做类似的分析。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7041033

复制
相关文章
请你谈谈大O符号(big-O notation)并给出不同数据结构的例子
大O符号描述了当数据结构里面的元素增加的时候,算法的规模或者是性能在最坏的场景下有多么好。
剑走天涯
2019/09/12
1.6K0
数据结构与算法 1-2 时间复杂度与大O表示
本系列是我在学习《基于Python的数据结构》时候的笔记。本小节主要介绍如何衡量算法效率,从通过程序执行的时间衡量到使用"大O记法"表示的时间复杂度来衡量。
触摸壹缕阳光
2019/11/13
5480
数据结构与算法 1-2 时间复杂度与大O表示
O(n)时间的排序
题目:某公司有几万名员工,请完成一个时间复杂度为O(n)的算法对该公司员工的年龄作排序,可使用O(1)的辅助空间。      题目特别强调是对一个公司的员工的年龄作排序。员工的数目虽然有几万人,但这几万员工的年龄却只有几十种可能。上班早的人一般也要等到将近二十岁才上班,一般人再晚到了六七十岁也不得不退休。 由于年龄总共只有几十种可能,我们可以很方便地统计出每一个年龄里有多少名员工。举个简单的例子,假设总共有5个员工,他们的年龄分别是25、24、26、24、25。我们统计出他们的年龄,24岁的有两个,25岁
猿人谷
2018/01/17
8030
时间复杂度o(1), o(n), o(logn), o(nlogn)
1、时间复杂度o(1), o(n), o(logn), o(nlogn)。算法时间复杂度的时候有说o(1), o(n), o(logn), o(nlogn),这是算法的时空复杂度的表示。不仅仅用于表示时间复杂度,也用于表示空间复杂度。O后面的括号中有一个函数,指明某个算法的耗时/耗空间与数据增长量之间的关系。其中的n代表输入数据的量。
别先生
2019/10/15
1.4K0
【转】算法中时间复杂度概括——o(1)、o(n)、o(logn)、o(nlogn)
在描述算法复杂度时,经常用到o(1), o(n), o(logn), o(nlogn)来表示对应算法的时间复杂度。这里进行归纳一下它们代表的含义:这是算法的时空复杂度的表示。不仅仅用于表示时间复杂度,也用于表示空间复杂度。 O后面的括号中有一个函数,指明某个算法的耗时/耗空间与数据增长量之间的关系。其中的n代表输入数据的量。
用户5640963
2019/07/26
1.2K0
【译】大O的友好指南
原文链接:https://medium.com/@daily_javascript/a-friendly-guide-to-big-o-ea781c5f68f0
Jackeyzhe
2020/03/11
4400
【译】大O的友好指南
《数据结构与算法》O(3N)=O(N)?
相互之间存在一种或多种特定关系的数据元素的集合,我总结一下就是描述数据关系的一种载体。
Java3y
2020/03/03
5450
算法素颜(第3篇):KO!大O——时间复杂度
在本系列第1篇《走下神坛吧!算法》中提到了:计算复杂度分为时间复杂度与空间复杂度。本篇文章来讲讲时间复杂度。
用户5224393
2019/06/05
8410
算法素颜(第3篇):KO!大O——时间复杂度
算法:大O符号解释
该文介绍了算法大O符号的含义,并列举了一些常见的符号。文章还通过一些例子解释了线性时间、恒定时间、对数时间等概念。
大数据弄潮儿
2017/12/21
1.3K0
算法:大O符号解释
算法大O表示法
在计算机编程算法中,O 是用来描述函数增长率的符号,来源于数学中的大O符号,也叫做大O表示法或者渐进表示法。它的全称是“Order of”,翻译过来就是“某某的数量级”。
运维开发王义杰
2023/08/10
2870
算法大O表示法
获取不同时区的时间
真诚与朴实是天才的宝贵品质。——斯坦尼斯拉夫斯基 System.out.println("下面的是两个默认时区的LocalDateTime"); final LocalDateTime localDateTime = LocalDateTime.ofInstant(new Date().toInstant(), ZoneId.systemDefault()); final LocalDateTime localDateTime1 = LocalDateTime.now(); System.out.p
阿超
2022/08/16
2.2K0
获取不同时区的时间
相同的时间,不同的人生
在规定的时间内,一个人目标的达成情况(创造的价值),我们称之为效率。如此可见效率与时间是密切相关的,提高效率首先要做的就是提高我们的时间利用率。
keinYe
2020/05/25
1.2K0
数据结构与算法 1-6 Python列表类型不同操作的时间效率
本系列是我在学习《基于Python的数据结构》时候的笔记。本小节首先回顾一下timeit代码执行时间测量模块,然后通过此模块测算Python中list列表一些操作的时间效率。
触摸壹缕阳光
2019/11/13
7660
数据结构与算法 1-6 Python列表类型不同操作的时间效率
什么是大O表示法
做了这么多年的程序员,是不是一直靠着自己的聪明伶俐在编码,数据结构和算法是前辈们的心血和经验总结,不可错过。
码农神说
2020/08/05
1.3K0
什么是大O表示法
在O(1)时间删除链表结点
题目:给定链表的头指针和一个结点指针,在O(1)时间删除该结点。 函数的声明如下: void DeleteNode(ListNode** pListHead, ListNode* pToBeDeleted);   分析:这是一道广为流传的Google面试题,能有效考察我们的编程基本功,还能考察我们的反应速度,更重要的是,还能考察我们对时间复杂度的理解。 注意函数的第一个参数pListHead是一个指向指针的指针。例如,当我们往一个空链表中插入一个结点时,新插入的结点就是链表的头指针。由于此时会改动头指针,因
猿人谷
2018/01/17
8250
在O(1)时间删除链表结点
进程运行于不同的 CPU 核
用 Gearman 搭建 Map/Reduce ,GearmanManager 来管理所有的 workers。启动多个 gearman-manager daemon,为了充分利用服务器资源,使其运行于不同的 CPU 内核上。 假设启动 10 个gearman-manager daemon,CPU 是 4核。 [root@www ~]# ps aux | grep gearman-manager | awk {'print $2;'} | sort -k1,1 | head -3 | xargs -n 1
小小科
2018/05/02
2.6K0
进程运行于不同的 CPU 核
算法-O(1)时间删除链表的指定结点
题目:给定一个链表的头指针和一个结点的指针,定义一个函数在O(1)时间删除该结点。链表结点与函数的定义如下: struct ListNode { int value; ListNode *ne
chaibubble
2018/01/02
7320
算法-O(1)时间删除链表的指定结点
如何运行 O’Reilly 书 Python for Finance 的源代码
GitHub 中有一个 https://github.com/yhilpisch/py4fi 项目。
HoneyMoose
2020/06/01
1.1K0
如何运行 O’Reilly 书 Python for Finance 的源代码
Leetcode 238 Product of Array Except Self 时间O(n)和空间O(1)解法
  给定一个n个整数的数组( n>1 )nums,返回一个数组output,当中的元素 outputi 的值为原数组nums中除 numsi 之外的全部元素的积。比如:nums数组为[1,2,3,4]。返回的output数组为[24,12,8,6]。
全栈程序员站长
2022/07/08
2650
Golang语言--计算运行的时间
函数time.Since() 计算golang运行的时间是非常有用的性能衡量指标,特别是在并发基准测试中。下面将介绍如何简单地使用Go语言来计算程序运行的时间。 简单地使用Golang的time.Si
李海彬
2018/03/21
1.5K0
Golang语言--计算运行的时间

相似问题

数据结构:大O时间成本

12

计算大O运行时间

11

查找大O运行时间

35

分析运行时间,大O

20

确定大O运行时间

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文