首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >不同数据结构的大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

复制
相关文章
微信设置 在浏览器中打开 用于下载app单页
文章时间:2019年2月14日 00:18:24 解决问题:在微信内置浏览器中,点击下载,弹出提示框,提示在浏览器中打开 第一步 判断微信的ua var ua = navigator.userAgent; var isWeixin = !!/MicroMessenger/i.test(ua); 第二步 引入默认的隐藏层 <a href="http://nooss.cn/test.apk" id="JdownApp">点击下载APP</a> <a href="http://nooss.cn/test
华创信息技术
2019/11/08
1.7K0
在 Ubuntu 中安装 Vivaldi 浏览器的操作命令
Vivaldi 是一款日益流行的网页浏览器。它基于 Chromium 内核,因此它拥有和 Chrome 类似的功能,但它也新增了一些其他特色功能,让这款浏览器与众不同、更为直观。
用户8989785
2021/10/13
1.3K0
为什么 strace 在 Docker 中不起作用?
在编辑“容器如何工作”爱好者杂志的能力页面时,我想试着解释一下为什么 strace 在 Docker 容器中无法工作。
用户8639654
2021/09/18
6.5K0
在bootstrap中col-md-offset-* 偏移不起作用
在bootstrap中,使用col-md-offset-1、col-md-offset-2、col-md-offset-3、col-md-offset-4等来设置偏移量很常见,但最近就遇到一个问题了,在最新版的bootstrap4.5中,这个值不起作用了。
kirin
2020/10/27
12.6K1
android 混淆不起作用,Android代码混淆的写法总结
Apk文件被反编译出来能被获取到里面的代码。对于这种情况,我们可以对项目代码进行混淆,随机生成难理解的类名,方法名,让代码难以阅读,加大功能被盗取的难度。混淆可以起到压缩Apk,混淆文件,预检,优化的作用。
全栈程序员站长
2022/09/01
3.3K0
解决Hadoop在浏览器中Browse Directory,无法下载文件的问题
把你linux中的hosts文件中的映射数据,复制到windows下的hosts中
手撕代码八百里
2020/07/28
2.6K0
解决Hadoop在浏览器中Browse Directory,无法下载文件的问题
在NETCORE中,实现对AzureBLOB文件的上传下载操作
在之前的文章中,说到了SeaweedFS和MinIO,如果是使用的微软全家桶的话,那肯定就使用Azure Blob了,更直接、更简单和更高效。
老张的哲学
2023/08/23
5310
在NETCORE中,实现对AzureBLOB文件的上传下载操作
Android 10 中的浏览器构建
从 Android 4.4 开始,系统浏览器内核开始从 WebKit 切换到 Chromium。为了保持 API 兼容,Chromium 为 Android WebView 提供了 Chromium WebView 封装。最初 Chromium Webview 代码是位于 AOSP 源码树中,和 AOSP 源码一起构建。到了 Android 5.0,Chromium WebView 代码依然在 AOSP 源码树上,只是 Android 5.0 还支持单独升级 Chromium WebView,这时 Chromium WebView 由一个 名为 webview.apk (从 Chromium 源码 build 出来的叫 SystemWebView.apk,文件名不是那么重要)提供。由于是一个 APK,可以像普通应用 APK 那样安装、升级。到了 Android 6.0, AOSP 源码和 Chromium 源码彻底分离,AOSP 中不再包含 Chromium 的源码,取而代之的是一个 prebuilt 的 webview.apk 。
云水木石
2023/10/08
1.1K0
Android 10 中的浏览器构建
在Spring官网下载spring的约束文件和源码
2、点击projects,然后再点击springframework  https://spring.io/projects/spring-framework#learn
静谧星空TEL
2021/04/27
9940
在Spring官网下载spring的约束文件和源码
Springboot中Excel的下载操作(二)
最近在做SpringBoot项目,项目中需要上传Excel文件,对Excel文件中的内容进行解析,然后将需要的数据存入数据库,同时还要根据用户的需求,将需要的内容生成Excel文件,并下载下来。本篇主要是介绍Excel文件的生成以及下载,使用的开发工具是IDEA 。关于Excel文件的生成请移步SpringBoot项目中关于Excel的解析(一)。
23号杂货铺
2019/09/27
8670
Springboot中Excel的下载操作(二)
List.append() 在 Python 中不起作用,该怎么解决?
Python 是一种强大而灵活的编程语言,它提供了许多方便的数据结构和操作方法,其中之一就是列表(List)。列表是一个有序的集合,可以包含不同类型的元素,并且可以进行添加、删除和修改等操作。在 Python 中,我们通常使用 List.append() 方法向列表末尾添加元素。然而,在某些情况下,你可能会遇到 List.append() 方法不起作用的问题。本文将详细讨论这个问题并提供解决方法。
网络技术联盟站
2023/06/01
2.8K0
Android JNI 中的线程操作
Native 中支持的线程标准是 POSIX 线程,它定义了一套创建和操作线程的 API 。
音视频开发进阶
2019/07/26
1.2K0
Android中关于UUID的操作
UUID 通用唯一识别码(Universally Unique Identifier)是一种软件建构的标准; UUID的目的,是让分布式系统中的所有元素,都能有唯一的辨识信息,而不是需要通过中央控制端来做辨识信息的指定。如此以阿里,每个人都可以创建与其他人不冲突的UUID。在这种情况下,就不需要考虑数据库创建时的重复问题; UUID是由一组32位数的16进制数字构成,UUID的标准形式包含32个16进制数字,以连字号分为五段。形式为 8-4-4-12的32个字符。 550e8400-e29b-41d4-a7
佛系编码
2018/05/22
2.4K0
Spring中如何操作JDBC
本篇文章介绍一下在Spring中如何使用JDBC,事实上,在Spring中使用JDBC和传统的JDBC或者一些JDBC框架,如:DBUtils的使用没有什么区别,所以Spring中使用JDBC是非常简单的。
wangweijun
2020/02/14
3490
WebSocket在Spring Boot中的使用
“WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。”
小诸葛
2020/04/14
4.3K0
WebSocket在Spring Boot中的使用
剖析 SPI 在 Spring 中的应用
SPI(Service Provider Interface),是Java内置的一种服务提供发现机制,可以用来提高框架的扩展性,主要用于框架的开发中,比如Dubbo,不同框架中实现略有差异,但核心机制相同,而Java的SPI机制可以为接口寻找服务实现。SPI机制将服务的具体实现转移到了程序外,为框架的扩展和解耦提供了极大的便利。
2020labs小助手
2022/06/21
1.1K0
点击加载更多

相似问题

用于android浏览器的操作栏

21

Spring :在浏览器中触发InputStream下载

10

在android中禁用浏览器下载

21

下载在Android浏览器中失败

13

spring-mvc下载操作

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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