news 2026/6/23 19:13:53

时间复杂度

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
时间复杂度

这种题目是数据结构与算法考研(如408)或面试中的高频送分题,但也是高频陷阱题

复习这类题目,不要靠“猜”或者“死记硬背”,而是要掌握一套**“数学建模”**的方法。一旦你建立了数学直觉,这类题看一眼就能选出答案。

以下是我总结的复习经验、技巧和核心知识点体系:


一、 核心复习心法:拒绝“直接相乘”,学会“级数求和”

很多同学做错这道题(选CO(nlog⁡n)O(n \log n)O(nlogn)),是因为用了错误的直觉:

“外层循环看起来是log⁡n\log nlogn次,内层循环看起来是nnn次,乘起来就是nlog⁡nn \log nnlogn。”

❌ 错误原因:当内层循环的次数j < i依赖于外层循环变量i时,绝对不能直接相乘!必须把每次循环的次数写出来,进行求和


二、 三大经典模型(必背)

在复习时,你只需要把这三种最常见的循环模型搞定,90%的题目都能解决。

模型 1:等差数列模型(结果是O(n2)O(n^2)O(n2)

特征:外层线性增长(i++),内层依赖外层(j < i)。

for(inti=0;i<n;i++){// 0, 1, 2, ..., nfor(intj=0;j<i;j++){// 内层执行 i 次// ...}}
  • 数学分析
    第1次执行0次,第2次执行1次……第n次执行n−1n-1n1次。
    总次数S=0+1+2+⋯+(n−1)S = 0 + 1 + 2 + \dots + (n-1)S=0+1+2++(n1)
    这是等差数列求和,公式是n(n−1)2\frac{n(n-1)}{2}2n(n1),最高次项是n2n^2n2
  • 结论O(n2)O(n^2)O(n2)
模型 2:等比数列模型(你的这道错题,结果是O(n)O(n)O(n)

特征:外层指数增长(i *= 2),内层依赖外层(j < i)。

for(inti=1;i<n;i*=2){// 1, 2, 4, 8, ...for(intj=0;j<i;j++){// 内层执行 i 次// ...}}
  • 数学分析
    iii的取值序列是1,2,4,8,…,2k1, 2, 4, 8, \dots, 2^k1,2,4,8,,2k(其中2k<n2^k < n2k<n)。
    总次数S=1+2+4+8+⋯+2kS = 1 + 2 + 4 + 8 + \dots + 2^kS=1+2+4+8++2k
    这是等比数列求和(公比为2)。
    记忆技巧:在二进制世界里,等比数列的和≈\approx最后一项乘以2
    所以S≈2⋅2kS \approx 2 \cdot 2^kS22k。因为2k2^k2k接近nnn,所以总和接近2n2n2n
  • 结论O(n)O(n)O(n)
模型 3:独立对数模型(结果是O(nlog⁡n)O(n \log n)O(nlogn)

特征:外层线性增长(i++),内层不依赖具体数值,而是固定倍增(j *= 2)。

for(inti=0;i<n;i++){// 执行 n 次for(intj=1;j<n;j*=2){// 每次都执行 log n 次// ...}}
  • 数学分析
    外层固定跑nnn次。
    内层每次都跑log⁡2n\log_2 nlog2n次(和iii无关)。
    这是真正的“直接相乘”场景。
    总次数S=n×log⁡2nS = n \times \log_2 nS=n×log2n
  • 结论O(nlog⁡n)O(n \log n)O(nlogn)

三、 解题通用步骤(复习操作指南)

考试遇到任何看不准的题,按这三步走:

第一步:列出iii的变化序列
不要只看for,要在草稿纸上写出iii具体变成了多少。

  • 例题中:i=1,2,4,8,16,…i = 1, 2, 4, 8, 16, \dotsi=1,2,4,8,16,

第二步:写出每一步内层语句执行的次数

  • 例题中:当i=1i=1i=1执行1次,当i=2i=2i=2执行2次,当i=4i=4i=4执行4次……

第三步:列式求和并判断量级(最关键)

  • 式子:1+2+4+⋯+最后一项1 + 2 + 4 + \dots + \text{最后一项}1+2+4++最后一项
  • 判断技巧
    • 如果是1+2+3…(均匀增加),总量级是最后一项的平方 ->O(n2)O(n^2)O(n2)
    • 如果是1+2+4…(越加越大,成倍增加),总量级由最后一项决定(前面的加起来都没最后一项大),直接看最后一项是谁 ->O(n)O(n)O(n)
    • 如果是n + n/2 + n/4…(越加越小),总量级由第一项决定 ->O(n)O(n)O(n)

四、 避坑经验总结

  1. 看到i *= 2别急着选log⁡n\log nlogn

    • 如果它单独出现,是log⁡n\log nlogn
    • 如果它作为外层循环,且内层循环是j < i(累加型),答案通常是O(n)O(n)O(n)
    • 如果它作为外层循环,且内层循环是j < n(固定型),答案是O(nlog⁡n)O(n \log n)O(nlogn)
  2. 对数级的本质
    只有当问题规模每次缩减一半(如二分查找)或者循环变量每次乘以2独立执行时,才会出现log⁡n\log nlogn

  3. 常数项忽略
    如果是i *= 3或者i += 2,分析方法一样。

    • i *= 3依然是等比数列,O(n)O(n)O(n)
    • i += 2依然是等差数列,仅系数变化,O(n2)O(n^2)O(n2)

五、 应该掌握的数学公式

复习时,把这三个公式背下来,考试就能横着走:

  1. 等差数列求和
    1+2+⋯+n=n(n+1)2⇒O(n2)1 + 2 + \dots + n = \frac{n(n+1)}{2} \Rightarrow O(n^2)1+2++n=2n(n+1)O(n2)
  2. 等比数列求和 (q>1q > 1q>1)
    1+2+4+⋯+2k=2k+1−1⇒O(2k)=O(n)1 + 2 + 4 + \dots + 2^k = 2^{k+1} - 1 \Rightarrow O(2^k) = O(n)1+2+4++2k=2k+11O(2k)=O(n)
  3. 调和级数求和(较难题目会考):
    1+12+13+⋯+1n≈ln⁡n⇒O(log⁡n)1 + \frac{1}{2} + \frac{1}{3} + \dots + \frac{1}{n} \approx \ln n \Rightarrow O(\log n)1+21+31++n1lnnO(logn)
    (考点:比如for(i=1;i<n;i++)里面套一个for(j=1; j<n; j+=i))

复习建议
把你做过的所有时间复杂度题目拿出来,按上面的三大模型进行分类。你会发现90%的题目都逃不出这个圈子。这样复习完,你心里就非常有数了。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/20 15:43:35

网站建设公司怎么选?2025年网站设计制作公司推荐指南

在数字化转型加速的2025年&#xff0c;企业网站已从基础展示工具升级为品牌价值载体与业务增长引擎。面对市场上众多的网站建设服务商&#xff0c;企业如何选择真正具备专业设计能力、技术实力与可靠服务的合作伙伴成为关键考量。本文通过对蒙特网站、IPG、电通等多家网站建设公…

作者头像 李华
网站建设 2026/6/22 23:56:01

今天咱们来聊一个挺有意思的优化算法改进——基于透镜成像反向策略的海洋捕食者算法。这个改进版本在原始MPA基础上搞了点新花样,咱们直接上干货看代码实现

基于透镜成像反向策略的多策略改进海洋捕食者优化算法 算法改进先看这个反向策略的实现。透镜成像反向学习可不是简单的镜像对称&#xff0c;它通过引入缩放因子让反向解更灵活。咱们来看这段关键代码&#xff1a; def lens_opposite(position, lb, ub, alpha0.8):focal_point …

作者头像 李华
网站建设 2026/6/20 10:41:55

Gitee:本土化DevOps平台如何重塑中国开发者生态

Gitee&#xff1a;本土化DevOps平台如何重塑中国开发者生态 在数字化转型浪潮席卷全球的当下&#xff0c;中国开发者正迎来前所未有的机遇与挑战。作为国内领先的一站式DevOps平台&#xff0c;Gitee凭借其独特的本土化优势&#xff0c;正在重新定义代码托管与协作开发的行业标准…

作者头像 李华
网站建设 2026/6/22 5:53:25

vCenter Server 8.0U3h 新增功能简介

VMware vCenter Server 8.0U3h 发布 - 集中管理 vSphere 环境 Server Management Software | vCenter 请访问原文链接&#xff1a;https://sysin.org/blog/vmware-vcenter-8-u3/ 查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org vSphere 8…

作者头像 李华
网站建设 2026/6/20 7:59:41

Cisco NX-OS 10.6(2)F 发布 - 数据中心网络操作系统

Cisco NX-OS Software Release 10.6(2)F - 数据中心网络操作系统 NX-OS 网络操作系统 请访问原文链接&#xff1a;https://sysin.org/blog/cisco-nx-os-10/ 查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org Cisco NX-OS Cisco NX-OS 操作系…

作者头像 李华
网站建设 2026/6/23 14:19:00

Ubuntu24.04无操作卡死,无法唤醒问题以及内核版本切换记录

Ubuntu24.04日常使用过程的问题记录 2025/12/17 无操作卡死&#xff0c;无法唤醒 问题描述&#xff1a; 在使用Ubuntu24.04 内核版本 6.14.0-37 时&#xff0c;笔记本电脑无操作一段时间后卡死在停留界面无反应&#xff0c;或者黑屏但是没有关机&#xff0c;远程连接ssh中断&am…

作者头像 李华