时间复杂度分析

发布时间:2026/8/28 5:08:47

时间复杂度分析
1. 引言递归算法的时间复杂度通常用递归式表示。本文介绍三种分析递归式的工具:递归树法、主定理与 Akra-Bazzi 定理,并通过实例帮助读者掌握递归复杂度的分析方法。2. 时间复杂度基础2.1 什么是时间复杂度时间复杂度描述算法执行时间随输入规模增长的变化趋势,常用大 O 记号表示上界。常见复杂度从低到高:O(1)O(1)O(1)、O(log⁡n)O(\log n)O(logn)、O(n)O(n)O(n)、O(nlog⁡n)O(n \log n)O(nlogn)、O(n2)O(n^2)O(n2)、O(2n)O(2^n)O(2n)。下面列出常见算法的时间复杂度,便于对照记忆:递归算法的时间复杂度用递归式表示,如归并排序:T(n)=2T(n/2)+O(n) T(n) = 2T(n/2) + O(n)T(n)=2T(n/2)+O(n)含义:解决规模为nnn的问题,需解决 2 个规模为n/2n/2n/2的子问题,再加上合并所需的O(n)O(n)O(n)时间。3. 递归树法3.1 基本思想递归树法把递归式的展开过程画成一棵树,每个节点代表一个子问题的开销,把所有层开销累加即得总复杂度。以归并排序为例:T(n)=2T(n/2)+O(n) T(n) = 2T(n/2) + O(n)T(n)=2T(n/2)+O(n)递归树如下:n / \ n/2 n/2 / \ / \ n/4 n/4 n/4 n/4每层开销都是nnn,树高为log⁡2n\log_2 nlog2​n,因此总复杂度为Θ(nlog⁡n)\Theta(n \log n)Θ(nlogn)。3.2 递归树法的步骤展开递归式:把每层的分解与合并开销写在节点上。计算每层总开销:将同一层所有节点开销相加。确定树高:子问题规模从 n 缩小到常数所需的层数。累加所有层:将各层开销求和。3.3 递归树法示例示例一:二分查找T(n)=T(n/2)+O(1) T(n) = T(n/2) + O(1)T(n)=T(n/2)+O(1)每层只有一个节点,开销为O(1)O(1)O(1),树高为log⁡2n\log_2 nlog2​n,因此T(n)=Θ(log⁡n)T(n) = \Theta(\log n)T(n)=Θ(logn)。示例二:子问题规模不等T(n)=T(n/3)+T(2n/3)+O(n) T(n) = T(n/3) + T(2n/3) + O(n)T(n)=T(n/3)+T(2n/3)+O(n)每层总开销为nnn,树高由最长路径决定,为log⁡3/2(n)\log_{3/2}(n)log3/2​(n),因此T(n)=Θ(nlog⁡n)T(n) = \Theta(n \log n)T(n)=Θ(nlogn)。递归树法直观但不够严谨,更严格的证明通常借助主定理或 Akra-Bazzi 定理。4. 主定理(Master Theorem)4.1 主定理的适用条件主定理适用于形如下式的递归式:T(n)=aT(n/b)+f(n) T(n) = aT(n/b) + f(n)T(n)=aT(n/b)+f(n)其中 a ≥ 1 为子问题个数,b 1 为规模缩减比例,f(n) 为分解与合并的开销。4.2 主定理的三种情况主定理通过比较f(n)f(n)f(n)与nlog⁡ban^{\log_b a}nlogb​a的渐近大小关系划分三种情况。情况一:递归主导当f(n)=O(nlog⁡ba−ε)f(n) = O(n^{\log_b a - \varepsilon})f(n)=O(nlogb​a−ε)(ε0\varepsilon 0ε0)时:T(n)=Θ(nlog⁡ba) T(n) = \Theta(n^{\log_b a})T(n)

相关新闻

灰色关联分析:超越皮尔逊相关系数的趋势关联建模方法

灰色关联分析:超越皮尔逊相关系数的趋势关联建模方法

2026/8/28 4:58:47

1. 从“关系”说起:为什么建模时不能只看相关性?做数据分析或者数学建模的朋友,经常会遇到一个场景:手头有一堆指标,想找出哪个指标对最终结果的影响最大。比如,研究一个地区的经济发展,你可能有…

京东新店铺动销实战技巧:零基础快速破零起量

京东新店铺动销实战技巧:零基础快速破零起量

2026/8/28 4:58:47

从事京东店铺运营多年,接触过大量新店商家,大家普遍面临同一个难题:新店无权重、无销量、无评价,自然流量几乎为零,直通车投产低、烧钱没效果,店铺长期处于停滞状态。京东平台的核心流量逻辑非常直白&#…

CloakBrowser源码级反检测Chromium深度调研reCAPTCHA v3 0.9评分揭秘

CloakBrowser源码级反检测Chromium深度调研reCAPTCHA v3 0.9评分揭秘

2026/8/28 4:58:47

CloakBrowser:源码级反检测 Chromium,reCAPTCHA v3 打出 0.9 的 GitHub 项目深度调研免责声明:本文所有技术分析和数据均来自 GitHub 官方仓库(CloakHQ/CloakBrowser)、PyPI 仓库以及公开可访问的文档,不包…

小米玄戒三芯齐发@ACP#端侧 AI 规模化落地,YLB3116 轻量化存储桥接在 AI 服务中的实践机会

小米玄戒三芯齐发@ACP#端侧 AI 规模化落地,YLB3116 轻量化存储桥接在 AI 服务中的实践机会

2026/8/28 6:18:51

本文面向硬件工程师、AI 整机方案开发者、嵌入式研发人员,结合小米玄戒 O3/O100/D100 三芯发布,剖析轻量化端侧 AI 整机 RAG 知识库、数据集存储的工程痛点,对比 YLB3116 与 YLB3118 产品定位差异,解析国产 PCIe 转 SATA 主控 YLB…

基于Qt与C++的扫雷游戏开发:课程设计实战与高分指南

基于Qt与C++的扫雷游戏开发:课程设计实战与高分指南

2026/8/28 6:18:51

简介:面向对象编程(OOP)是软件工程的核心范式,通过封装、继承和多态三大特性,将数据与操作数据的方法组织成类,从而构建出模块化、可复用、易维护的代码结构。其原理在于模拟现实世界,将复杂系统…

蓝桥杯省赛复盘:从“砍竹子”到“扫雷”的算法思维与实战技巧

蓝桥杯省赛复盘:从“砍竹子”到“扫雷”的算法思维与实战技巧

2026/8/28 6:18:51

1. 从一次“翻车”经历聊起:为什么我们要复盘2022年蓝桥杯省赛?去年省赛结束后,我带的几个学生从考场出来,脸上表情各异。有个平时刷题挺猛的小伙子,出来第一句话是:“老师,那个‘砍竹子’的题&…

27B级大模型量化实测:Q4_K_M与Q8_0的精度和显存对决

27B级大模型量化实测:Q4_K_M与Q8_0的精度和显存对决

2026/8/28 6:18:51

在本地部署 27B 级大模型时,最纠结的往往不是选哪张显卡,而是到底该用哪种量化精度。Q4 显存友好但担心效果缩水,Q8 精度更高但体积和显存压力也跟着上来,网上相关讨论一抓一大把,真正做成对照测试并给出结论的却不多。…

从零构建LLM:打通训练与推理全流程的工程实践

从零构建LLM:打通训练与推理全流程的工程实践

2026/8/28 6:18:51

很多人学深度学习,前半段是“舒服”的。卷积、循环网络、注意力机制,每章讲一个模块,跟着代码敲一遍,跑个小案例,能出一个结果,就觉得自己懂了。等课程进入后半段,尤其是类似“从零构建 LLM”的…

利用HDX-MS鉴定羟基马桑毒素与其靶点Tutin的结合位点

利用HDX-MS鉴定羟基马桑毒素与其靶点Tutin的结合位点

2026/8/28 6:08:51

药物毒性是药物研发面临的重要问题之一,科学技术的发展赋予毒理学研究更多先进的研究工具和手段,实现了从整体水平向细胞和分子水平的飞跃,各种组学技术的发展使得对毒性药物的直接作用靶点的检测更加方便。癫痫是一种反复性突然发作的脑功能…

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

2026/8/27 11:10:02

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

2026/8/27 7:25:23

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

2026/8/26 17:50:58

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

基于Claude Code的开源AI求职框架:从职位搜索到Offer的全自动化闭环

基于Claude Code的开源AI求职框架:从职位搜索到Offer的全自动化闭环

2026/8/28 0:08:32

当AI助手能够独立完成从职位匹配、简历定制到面试准备的全链路求职流程时,求职不再是一场信息战,而是一场工程化战役。框架概述:本地运行的AI求职引擎这是一个构建在Claude Code之上的开源AI求职框架,核心理念是"在工作者的机…

Godot 4 仿 agar.io:相机缩放被 max_zoom 卡死,窗口越大球越小的根因与修复

Godot 4 仿 agar.io:相机缩放被 max_zoom 卡死,窗口越大球越小的根因与修复

2026/8/28 0:08:32

1. 问题现象 在 Godot 4 仿 agar.io 的 2D 项目中,相机缩放设计为「由球组整体尺寸决定」,世界可见高度恒定,窗口只作为视口裁剪。默认小窗口 1280x720 时相机高度正常;但窗口最大化到 2940x1912 后,视角被明显拉远、…

从软件测试大赛到实战:Java+Selenium自动化测试进阶指南

从软件测试大赛到实战:Java+Selenium自动化测试进阶指南

2026/8/28 0:08:32

1. 缘起:从校园到赛场,我的软件测试之路几年前,我还是一个在校园里对着Java课本和“Hello World”程序挠头的普通学生。软件测试对我来说,只是一个在开发流程末尾、用鼠标点点按钮的模糊概念。直到我偶然在学校的公告栏上看到了“…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/22 2:02:26

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/26 18:07:30

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/26 17:57:52

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…