时间复杂度计算 递归

news2024/11/19 19:39:58

我们先拿出 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.coloradmin.cn/o/2132567.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机毕业设计 酷听音乐系统的设计与实现 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…

【SQL】百题计划:SQL排序Order by的使用。

简述: 排序函数:Order by;升序 ASC;降序 DESC; 答案: Select distinct author_id as id from Views where author_id viewer_id order by id Asc;

关于华大/小华 HC32F460 在IAR环境中,无法启用FPU 硬件浮点运算单元的解决方案

需求:要使用浮点FFT功能,面开启M4的 FPU功能 问题:无法开启 FPU,如下图所示:此栏为灰色,无法选择 尝试强制增加 __ARMVFP__: 编译出错,无法内链FPU: 解决方案&#xff1…

[000-01-008].第05节:OpenFeign高级特性-日志打印功能

我的后端学习大纲 SpringCloud学习大纲 1、日志打印功能: 1.Feign 提供了日志打印功能,我们可以通过配置来调整日志级别,从而了解 Feign 中 Http 请求的细节,说白了就是对Feign接口的调用情况进行监控和输出 2、日志级别: NONE&…

vue3【实战-组件封装】图文卡片

效果预览 技术要点 图片宽高比固定为 16:9,展示方式为 object-fit: cover通过 v-bind 实现父组件向子组件的批量传参单行文本超长显示省略号 white-space: nowrap; overflow: hidden; text-overflow: ellipsis; title 属性实现鼠标悬浮显示文本完整内容 范例代码 …

HarmonyOS开发之使用Picker(从相册选择图片),并且通过Swiper组件实现图片预览

一:效果图: 二:添加依赖 import picker from ohos.file.picker; 三:创建showDialog showDialog() {AlertDialog.show({message: 从相册选择,alignment: DialogAlignment.Bottom,offset: { dx: 0, dy: -12 },primaryButton: {val…

Java面试、技巧、问题、回复,资源面面观

入门 先了解一下面试流程 复习 Java 基础知识: 温习 Java 编程的核心概念,包括数据类型、变量、循环、数组和面向对象的编程原则。数据结构和算法: 加强您对 Java 编程中使用的基本数据结构和算法的理解。练习编码: 在各种平台上解…

PHP一键约课高效健身智能健身管理系统小程序源码

一键约课,高效健身 —— 智能健身管理系统让健康触手可及 🏋️‍♀️ 告别繁琐,一键开启健身之旅 你还在为每次去健身房前的繁琐预约流程而烦恼吗?现在有了“一键约课高效健身智能健身管理系统”,所有问题都迎刃而解…

YARN----调度策略

Yarn中,负责给应用分配资源的就是Scheduler 在Yarn中有三种调度器可以选择:FIFO Scheduler ,Capacity Scheduler,Fair Scheduler FIFO Scheduler 先进先出策略 在进行资源分配的时候,先给队列中最先上的应用进行分配…

springboot从分层到解耦

注释很详细,直接上代码 三层架构 项目结构 源码: HelloController package com.amoorzheyu.controller;import com.amoorzheyu.pojo.User; import com.amoorzheyu.service.HelloService; import com.amoorzheyu.service.impl.HelloServiceA; import o…

GoogleSQL:SQL 中的 Pipe 语法

这些是我根据论文 SQL Has Problems 编写的笔记。我们可以修复它们:SQL 中的 Pipe 语法 TL博士 SQL 长期以来一直是结构化数据处理的主导语言,通过本文,GoogleSQL 团队引入了一种新的管道结构化数据流语法,该语法显著提高了 SQL …

自学前端靠谱吗?

很多同学都会对自学前端持怀疑态度,这靠谱吗? 靠自学能学得会?一听就不靠谱,一定是骗子。 但实际上,大家都掉入一个错觉当中了。。。 一个天大的错觉 指望公司教你 在大厂,会有培训体系,会…

51单片机快速入门之定时器和计数器

51单片机快速入门之定时器 断开外部输入 晶振振荡 假设为 12MHz 12分频之后,为1MHz 当其从0-65536 时,需要65536μs 微秒 也就是65.536ms 毫秒 溢出(值>65536 时)>中断>执行中断操作 假设需要1ms后产生溢出,则需要设置初始值为64536 此时定时器会从 64536 开始计…

AD6120 60V降压芯片 2A的电流 适用于48V降12/5v 高效率转换

AD6120是一款电流模式单片降压开关稳压器,输入电压范围为5V~60V,可在宽输入电压范围内提供2A的连续输出电流,具有优异的负载和线路调节能力。在轻负载下,该稳压器以低频率运行,以保持高效率和低输出纹波 。电流模式控制…

性能测试-jmeter连接数据库(十七)...

百度服务器域名:www.baidu.com 百度的IP:110.242.68.3(使用ping www.baidu.com) jdbc:mysql://211.103.136.244:7061/test_db: mysql是数据库类型211.103.136.244是服务器IP7061是服务器端口号test_db是服务器的数据库 一、为…

Vite项目中的懒加载介绍

概述 import.meta 元属性将特定上下文的元数据暴露给 JavaScript 模块。它包含了这个模块的信息,例如这个模块的 URL。在vue3项目中,用的比较多的是通过import.meta.env来获取环境变量。而本文将要介绍的import.meta.glob和import.meta.env都是vite提供…

【零基础学习CAPL】——CRC值监控测试

🙋‍♂️【零基础学习CAPL】系列💁‍♂️点击跳转 ——————————————————————————————————–—— 从0开始学习CANoe使用 从0开始学习车载车身 相信时间的力量 星光不负赶路者,时光不负有心人。 目录 1.概述2.需求介绍3.算法4.逻辑判断5.测…

VS2022中文字符输出为乱码的解决

一、问题 vs2022输出中文时,出现乱码现象 二、解决方案 把文件的字符编码格式改为utf-8格式 选择工具,点击自定义 选择命令,点击添加命令 选择文件,点击高级保存选项,然后点击确定 点击高级保存选项 选择utf-8编…

Android10源码刷入Pixel2以及整合GMS

一、ASOP源码下载 具体可以参考我之前发布的文章 二、下载相关驱动包 这一步很关键,关系到编译后的镜像能否刷入后运行 下载链接:Nexus 和 Pixel 设备的驱动程序二进制文件 如下图所示,将两个驱动程序上传到Ubuntu服务器,并进行解压,得到两个脚本: 下载解压后会有两…

华为SMU02B1智能通信电源监控单元模块简介

华为SMU02B1是一款智能通信电源监控单元模块,专为5G嵌入式机框设计,它在通信电源管理领域扮演着重要角色。以下是对该产品的详细介绍: 一、产品概述 主要功能:华为SMU02B1能够监控和管理通信电源系统,提供站点监控功能…