时间复杂度计算 递归

我们先拿出 2021 csp-s 程序题中一道看着就头大的程序题,要求分析 solve1 的复杂度。
在这里插入图片描述
在这里插入图片描述
T(n) ⁡ \operatorname{T(n)} T(n) 表示数组长度为 n n n 时的复杂度(即 m − h + 1 = n m-h+1=n mh+1=n)。 T ( 1 ) = 1 T(1)=1 T(1)=1,根据 return solve1(h,j)+solve1(j+1,m); 可知, T(n) ⁡ = 2 ∗ T ⁡ ( n / 2 ) + 1 \operatorname{T(n)}=2*\operatorname{T}(n/2)+1 T(n)=2T(n/2)+1(分别做两个 solve1,加起来并 return 的时间)。推导:
T(n) ⁡ = 2 × T(n/2) ⁡ + 1 \operatorname{T(n)}=2\times \operatorname{T(n/2)}+1 T(n)=2×T(n/2)+1
在这里插入图片描述 = 2 × ( 2 × T ⁡ ( n / 2 2 ) + 1 ) + 1 =2\times(2\times \operatorname{T}(n/2^2)+1)+1 =2×(2×T(n/22)+1)+1
在这里插入图片描述 = 2 2 × T ⁡ ( n / 2 2 ) + 2 + 1 =2^2\times \operatorname{T}(n/2^2)+2+1 =22×T(n/22)+2+1
在这里插入图片描述 = 2 2 × ( 2 × T ⁡ ( n / 2 3 ) + 1 ) + 2 + 1 =2^2\times(2\times\operatorname{T}(n/2^3)+1)+2+1 =22×(2×T(n/23)+1)+2+1
在这里插入图片描述 = 2 3 × T ⁡ ( n / 2 3 ) + 2 2 + 2 + 1 =2^3\times \operatorname{T}(n/2^3)+2^2+2+1 =23×T(n/23)+22+2+1
(这里默认所有 log ⁡ \log log 都是下取整)
括号中的 n / 2 k n/2^k n/2k k = log ⁡ 2 n k=\log_{2}n k=log2n 时无法继续分解,为最终情况。大概找到规律了,开始写出通用式子。
T ⁡ ( n ) = 2 log ⁡ 2 n × T ⁡ ( n / 2 log ⁡ 2 n ) + 2 log ⁡ 2 ( n − 1 ) + 2 log ⁡ 2 ( n − 2 ) + ⋯ + 2 + 1 \operatorname{T}(n)=2^{ \log_2n}\times \operatorname{T}(n/2^{ \log_2n})+2^{ \log_2(n-1)}+2^{ \log_2(n-2)}+\dots+2+1 T(n)=2log2n×T(n/2log2n)+2log2(n1)+2log2(n2)++2+1
因为 T ⁡ ( n / 2 log ⁡ 2 n ) \operatorname{T}(n/2^{ \log_2n}) T(n/2log2n) 是一个小于 2 2 2 的常数,在时间复杂度计算中忽略, T ⁡ ( n ) = 2 log ⁡ 2 ( n + 1 ) − 1 = 2 × 2 log ⁡ 2 n − 1 = 2 n − 1 \operatorname{T}(n)=2^{ \log_2(n+1)}-1=2\times2^{ \log_2n}-1=2n-1 T(n)=2log2(n+1)1=2×2log2n1=2n1
总结:递归题时间复杂度计算要关注调用函数的地方,写出时间复杂度的递推式,再归纳为易计算的代数式。
solve2 请读者尝试自己计算吧!(后续更新讲解)


今天作业从黑板的最上端一直写到最下端(可是我们才刚上初二啊,至于吗…),四个副科(物,化,道法,历史) + 三个主科 = 一个崩溃到明天想集体不上学的班级 + 一群充满了谩骂声的学生。此处我并不知道为什么我还能准备初赛,如果不是看了会儿 ES 续上命,本人的灵魂已经飞往天外了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/423317.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

R语言机器学习算法实战系列(一):XGBoost算法(eXtreme Gradient Boosting)

介绍 XGBoost(eXtreme Gradient Boosting)是一种基于梯度提升决策树(GBDT)的优化算法,它在处理大规模数据集和复杂模型时表现出色,同时在防止过拟合和提高泛化能力方面也有很好的表现。以下是XGBoost算法的原理和应用方向的详细介绍: 算法原理 目标函数:XGBoost的目标…

华为ensp中vlan与静态路由技术的实现

vlan 同一网段的设备,可以互通; 虚拟局域网:将局域网从逻辑上划分为多个局域网,不同通过vlan编号区分; 实现网络隔离。提高了网络安全性; vlan编号为12位; 范围1-4094可以用来配置 默认处于…

pytorch-AutoEncoders实战

目录 1. AutoEncoders回顾2. 实现网络结构3. 实现main函数 1. AutoEncoders回顾 如下图:AutoEncoders实际上就是重建自己的过程 2. 实现网络结构 创建类继承自nn.Model,并实现init和forward函数,init中实现encoder、decoder 直接上代码&a…

代码随想录算法训练营第13天|二叉树基础知识、递归遍历、迭代遍历、层序遍历、116. 填充每个节点的下一个右侧节点指针

目录 二叉树基础深度和高度满二叉树和完全二叉树二叉搜索树和平衡二叉搜索树二叉树节点定义前中后序遍历 递归遍历前序递归遍历—144. 二叉树的前序遍历 迭代遍历层序遍历116. 填充每个节点的下一个右侧节点指针1、题目描述2、思路3、code 二叉树基础 深度和高度 满二叉树和完…

XSS跨站脚本攻击及防护

什么是XSS攻击? XSS(Cross-Site Scripting,跨站脚本攻击)是一种代码注入攻击。攻击者在目标网站上注入恶意代码,当用户(被攻击者)登录网站时就会执行这些恶意代码,通过这些脚本可以读取cookie,session tokens,或者网站其他敏感的网…

Ubuntu WSL使用技巧

0 Preface/Foreword 1 默认为root用户 当下载完成Ubuntu之后,首次登录,当完成初始化后,提示输入新的用户名时候,直接点击右上角的X按钮,再重新登陆,系统会默认使用root权限登录。 2 root用户和普通用户切换…

阿里云社区领积分自动打卡Selenium IDE脚本

脚本 感觉打卡比较麻烦,要点开点按钮这种机械化的操作。 所以就自己整了个脚本: { “id”: “f9999777-9ad6-40e0-9435-4f105919c982”, “version”: “2.0”, “name”: “aliyun”, “url”: “https://developer.aliyun.com”, “tests”: [{ “id”…

ubuntu22安装docker

1、查看服务器系统信息 uname -a:显示内核名称、主机名、内核版本、处理器类型等信息。 lsb_release -a:显示有关 Ubuntu 发行版的详细信息,包括版本号、代号等。 free -h:查看系统内存使用情况。 df -h:查看磁盘空间使…

Vue2时间轴组件(TimeLine/分页、自动顺序播放、暂停、换肤功能、时间选择,鼠标快速滑动)

目录 1介绍背景 2实现原理 3组件介绍 4代码 5其他说明 1介绍背景 项目背景是 一天的时间轴 10分钟为一间隔 一天被划分成144个节点 一页面12个节点 代码介绍的很详细 可参考或者借鉴 2实现原理 对Element-plus滑块组件的二次封装 基于Vue2(2.6.14&#x…

Vue3 : ref 与 reactive

目录 一.ref 二.reactive 三.ref与reactive的区别 四.总结 一.ref 在 Vue 3 中,ref 是一个用于创建可读写且支持数据跟踪的响应式引用对象。它主要用于在组件内部创建响应式数据,这些数据可以是基本类型(如 number、string、boolean&…

深入理解全连接层:从线性代数到 PyTorch 中的 nn.Linear 和 nn.Parameter

文章目录 数学概念(全连接层,线性层)nn.Linear()nn.Parameter()Q1. 为什么 self.weight 的权重矩阵 shape 使用 ( out_features , in_features ) (\text{out\_features}, \text{in\_features}) (out_features,in_features)而不是 ( in_featur…

Vue的缓存组件 | 详解KeepAlive

引言 在Vue开发中,我们经常需要处理大量的组件渲染和销毁操作,这可能会影响应用的性能和用户体验。而Vue的KeepAlive组件提供了一种简便的方式来优化组件的渲染和销毁流程,通过缓存已经渲染的组件来提升应用的性能。 本文将详细介绍Vue的Ke…

即插即用篇 | YOLOv10 引入矩形自校准模块RCM | ECCV 2024

本改进已同步到YOLO-Magic框架! 语义分割是许多应用的重要任务,但要在有限的计算成本下实现先进性能仍然非常具有挑战性。在本文中,我们提出了CGRSeg,一个基于上下文引导的空间特征重建的高效且具有竞争力的分割框架。我们精心设计了一个矩形自校准模块,用于空间特征重建和…

经典RNA-seq分析流程1

RNA-seq分析有很多流程, 一般都是上游linux工具获取表达矩阵数据,然后就可以使用下游R包进行处理了,要么是差异DEG表达gene等分析; 因为下游分析其实R包是明确的,毕竟有很多生信分析教程,但是上游的linux…

无人机之处理器篇

无人机的处理器是无人机系统的核心部件之一,它负责控制无人机的飞行、数据处理、任务执行等多个关键功能。以下是对无人机处理器的详细解析: 一、处理器类型 无人机中使用的处理器主要包括以下几种类型: CPU处理器:CPU是无人机的…

神经网络多层感知器异或问题求解-学习篇

多层感知器可以解决单层感知器无法解决的异或问题 首先给了四个输入样本,输入样本和位置信息如下所示,现在要学习一个模型,在二维空间中把两个样本分开,输入数据是个矩阵,矩阵中有四个样本,样本的维度是三维…

Unity全面取消Runtime费用 安装游戏不再收版费

Unity宣布他们已经废除了争议性的Runtime费用,该费用于2023年9月引入,定于1月1日开始收取。Runtime费用起初是打算根据使用Unity引擎安装游戏的次数收取版权费。2023年9月晚些时候,该公司部分收回了计划,称Runtime费用只适用于订阅…

[数据集][目标检测]车窗状态检测车窗开关检测数据集VOC+YOLO格式299张3类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):299 标注数量(xml文件个数):299 标注数量(txt文件个数):299 标注类别…

应用程序已被 Java 安全阻止:Java 安全中的添加的例外站点如何对所有用户生效

如题:应用程序已被 Java 安全阻止,如下图所示: 在寻找全局配置的时候花了一个上午的时间,到处搜解决方法,都不可行。最后还是参考官方的文档配置好了。如果你碰到了同样的问题,这篇文章一定可以帮到你。 环…

论文阅读:AutoDIR Automatic All-in-One Image Restoration with Latent Diffusion

论文阅读:AutoDIR: Automatic All-in-One Image Restoration with Latent Diffusion 这是 ECCV 2024 的一篇文章,利用扩散模型实现图像恢复的任务。 Abstract 这篇文章提出了一个创新的 all-in-one 的图像恢复框架,融合了隐扩散技术&#x…