news 2026/10/11 7:11:08

调和级数求和

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
调和级数求和

调和级数求和(Harmonic Series)模型是时间复杂度分析中稍微进阶一点的考点。它通常出现在**“跳跃式”循环或者“倍数”相关**的题目中。

如果说前面的题目是“送分题”,这个模型就是**“分水岭题”**,掌握了它,你的算法分析水平就上了一个台阶。


一、 经典代码长什么样?(识别特征)

最典型的代码特征是:内层循环的步长(increment)依赖于外层循环变量i。

请看这段经典代码:

// 外层:标准的线性循环for(inti=1;i<=n;i++){// 内层:注意看步长!是 j += i,而不是 j++// 这意味着 j 每次跳跃 i 个单位for(intj=1;j<=n;j+=i){sum++;// 基本操作}}

特征识别:

  1. 外层循环i从 1 到n。
  2. 内层循环j每次增加i(即j遍历的是i的倍数:i,2i,3i,…i, 2i, 3i, \dotsi,2i,3i,…)。

二、 为什么叫“调和级数”?(数学推导)

我们像之前一样,把每一步内层循环执行的次数列出来:

  1. 当i=1i = 1i=1时:
    j每次加 1,从 1 走到nnn。执行次数 =n/1=nn/1 = nn/1=n次。
  2. 当i=2i = 2i=2时:
    j每次加 2 (2, 4, 6…)。执行次数 =n/2n/2n/2次。
  3. 当i=3i = 3i=3时:
    j每次加 3 (3, 6, 9…)。执行次数 =n/3n/3n/3次。
    …
  4. 当i=ki = ki=k时:
    执行次数 =n/kn/kn/k次。

总执行次数T(n)T(n)T(n)求和:
T(n)=n1+n2+n3+⋯+nnT(n) = \frac{n}{1} + \frac{n}{2} + \frac{n}{3} + \dots + \frac{n}{n}T(n)=1n​+2n​+3n​+⋯+nn​

我们提取公因数nnn:
T(n)=n×(1+12+13+⋯+1n)T(n) = n \times \left( 1 + \frac{1}{2} + \frac{1}{3} + \dots + \frac{1}{n} \right)T(n)=n×(1+21​+31​+⋯+n1​)

重点来了:
括号里的部分1+12+13+⋯+1n1 + \frac{1}{2} + \frac{1}{3} + \dots + \frac{1}{n}1+21​+31​+⋯+n1​就是数学上著名的调和级数。

数学结论告诉我们:
1+12+⋯+1n≈ln⁡n+C(C 是欧拉常数)1 + \frac{1}{2} + \dots + \frac{1}{n} \approx \ln n + C \quad (C \text{ 是欧拉常数})1+21​+⋯+n1​≈lnn+C(C是欧拉常数)
换句话说,调和级数的和,增长趋势等于log⁡n\log nlogn。


三、 最终复杂度

T(n)=n×O(log⁡n)=O(nlog⁡n)T(n) = n \times O(\log n) = O(n \log n)T(n)=n×O(logn)=O(nlogn)

结论:
如果你看到内层循环是j += i(按倍数跳跃),那么这个两层循环的总复杂度不是O(n2)O(n^2)O(n2),而是O(nlog⁡n)O(n \log n)O(nlogn)。


四、 哪里会用到这个知识点?(实战场景)

这个模型最著名的应用就是**“素数筛法”(埃氏筛,Sieve of Eratosthenes)**。

场景:找出nnn以内的所有素数。
算法逻辑:

  1. 找到 2,把 2 的倍数(4, 6, 8…)划掉。
  2. 找到 3,把 3 的倍数(6, 9, 12…)划掉。
  3. …
  4. 找到iii,把iii的倍数划掉。

这个“划掉倍数”的过程,代码写出来就是上面的那个循环结构。
所以,埃氏筛的时间复杂度是O(nlog⁡log⁡n)O(n \log \log n)O(nloglogn)(比nlog⁡nn \log nnlogn还要快一点点,因为外层只遍历素数,但考试中如果问通用倍数循环,答O(nlog⁡n)O(n \log n)O(nlogn)即可)。


五、 考前极速记忆卡

在你的复习表格里,可以加上这一行:

循环特征典型代码片段复杂度记忆口诀
倍数跳跃型for(i=1; i<=n; i++)
for(j=1; j<=n; j+=i)
O(nlog⁡n)O(n \log n)O(nlogn)内层加i,调和级数,结果nlog⁡nn \log nnlogn
对比:线性累加型for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
O(n2)O(n^2)O(n2)内层加1,矩形面积,结果n2n^2n2
对比:指数跳跃型for(i=1; i<=n; i*=2)O(log⁡n)O(\log n)O(logn)外层乘2,折纸对半,结果log⁡n\log nlogn

掌握了这个,关于循环嵌套的时间复杂度题目,你就基本上没有盲区了。

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

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

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

作者头像 李华
网站建设 2026/10/11 22:38:45

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

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

作者头像 李华
网站建设 2026/10/11 6:30:01

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

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

作者头像 李华
网站建设 2026/10/11 7:52:37

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/10/11 15:01:25

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/10/11 19:49:27

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

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

作者头像 李华