时间复杂度 嵌套循环 内循环 + 外循环

2024-02-09

谁能解释一下这个算法的时间复杂度是多少?

for (i = 1; i <= n; i++){
    for(j = 1; j <= n; j += i) {   // note: not j++
        printf("Iteration %d : %d\n", i, j);   
    }
}

The printf在内循环中称为exactly ceil(n) + ceil(n/2) + ceil(n/3) + ... ceil(n/n)次。为了摆脱ceil, 我们知道ceil(y/n)上面的边界是y/n + 1,所以我们知道执行次数是>= n + n/2 + n/3 ... n/n but is < n + 1 + n/2 + 1 + n/3 + 1 + n/4 + 1... + n/n + 1。前者可以分解为n(1 + 1/2 + 1/3 + 1/4 ... 1/n)后者可以重构为n(1 + 1/2 + 1/3 + 1/4 ... 1/n) + n.

后一个因子是无穷大的第一个加数是谐波级数 https://en.wikipedia.org/wiki/Harmonic_series_(mathematics),这有所不同。第一个的总和k已知维基百科页面中的术语是有界的:

意思就是1 + 1/2 + 1/3 + 1/4 ... 1/n is Ө(ln n) = Ө(log n);我们可以对出现的次数给出严格的限制printf叫做 (c(n): n log n <= c(n) < n log n + 2n. Since n log n增长速度快于2n,我们可以只保留前者,并注意到两个边界都属于Ө(n log n)因此c(n)属于Ө(n log n)还有(Ө(F)意味着该函数既是Ω(F) and O(F)).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

时间复杂度 嵌套循环 内循环 + 外循环 的相关文章

  • MVC 重定向到没有控制器的视图

    希望应该是一个简单的 我创建了一个通用错误视图 当整个站点的操作方法内发生异常时 我想显示该视图 我创建了一个部分页面 所有导航都位于其中 因此我不需要在此视图上使用控制器 那么如何从控制器内的操作方法重定向到它 像这样的东西 HttpPo
  • 扫描文本文件时如何跳过行?

    我想扫描一个文件并在阅读之前跳过一行文本 我试过 fscanf pointer n struct test i j 但这个语法只是从第一行开始 我可以使用 scanf 使用以下指令跳过行 fscanf config file n n 格式字
  • 更快的算法来计算有多少数字可以被范围内的特定整数整除

    int a b c d 0 cin gt gt a gt gt b gt gt c for int i a i lt b i if i c 0 d cout lt
  • SetWindowsHookEx 函数返回 NULL

    我正在研究 DLL 注入 但收到错误如下 挂接进程失败 87 参数不正确 目标进程和dll都是64位的 注入代码为 BOOL HookInjection TCHAR target TCHAR dll name https msdn micr
  • 为什么派生类不使用基类的operator=(赋值运算符)?

    以下是实际问题的简化版本 而不是打电话Base operator int 代码似乎生成了一个临时的Derived对象并复制它 既然函数签名似乎完美匹配 为什么不使用基本赋值运算符 这个简化的示例没有显示任何不良影响 但原始代码在析构函数中有
  • 如何在 Windows 窗体中运行屏幕保护程序作为其背景?

    如何在 Windows 窗体中运行屏幕保护程序作为其背景 用户还可以在屏幕保护程序运行时与表单控件进行交互 为什么这个 我们有一个案例 需要在用户时运行 Windows Bubbles 屏幕保护程序 可以继续与表单控件交互吗 您可以使用以下
  • F10键没被抓住

    I have a Windows Form and there overriden ProcessCmdKey However this works with all of the F Keys except for F10 I am tr
  • 抽象类或接口。哪种方式是正确的?

    有两种方法可以选择抽象类或接口 微软解决方案和Oracle解决方案 微软 设计指南 请使用抽象 在 Visual Basic 中为 MustInherit 类而不是接口来将协定与实现分离 http msdn microsoft com en
  • 线程安全的 C++ 堆栈

    我是 C 新手 正在编写一个多线程应用程序 不同的编写者将对象推入堆栈 读者将它们从堆栈中拉出 或至少将指针推入对象 C 中是否有任何内置结构可以在不添加锁定代码等的情况下处理此问题 如果没有 那么 Boost 库呢 EDIT 你好 感谢您
  • C# 中处理 SQL 死锁的模式?

    我正在用 C 编写一个访问 SQL Server 2005 数据库的应用程序 该应用程序是数据库密集型的 即使我尝试优化所有访问 设置适当的索引等 我预计迟早会遇到死锁 我知道为什么会发生数据库死锁 但我怀疑我能否在某个时候发布不发生死锁的
  • `cosf`、`sinf` 等不在 `std` 中 [重复]

    这个问题在这里已经有答案了 根据这里的讨论 我有报告了一个错误 https bugs launchpad net ubuntu source gcc 8 bug 1831385给 Ubuntu 开发者 编译以下示例 C 程序时 includ
  • 在 .NET 中记录 StackOverflowException

    最近 我的 NET 应用程序 asp net 网站 中出现了堆栈溢出异常 我之所以知道该异常是因为它出现在我的 EventLog 中 我知道 StackOverflow 异常无法被捕获或处理 但是有没有办法在它杀死您的应用程序之前记录它 我
  • 理解 C++11 中的 std::atomic::compare_exchange_weak()

    bool compare exchange weak T expected T val compare exchange weak 是 C 11 中提供的比较交换原语之一 它是weak即使对象的值等于 它也会返回 falseexpected
  • 展开路径中具有环境变量的文件名

    最好的扩张方式是什么 MyPath filename txt to home user filename txt or MyPath filename txt to c Documents and settings user filenam
  • 如何将 CSV 文件读入 .NET 数据表

    如何将 CSV 文件加载到System Data DataTable 根据CSV文件创建数据表 常规 ADO net 功能是否允许这样做 我一直在使用OleDb提供者 但是 如果您正在读取具有数值的行 但希望将它们视为文本 则会出现问题 但
  • 是否有任何不使用公共虚拟方法的正当理由? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 是否有任何不使用公共虚拟方法的正当理由 我在某处读到我们应该避免使用公共虚拟方法 但我想向专家确认这是否是有效的声明 对于良好且稳定的 API
  • 将一个 long 转换为两个 int 以进行重构

    我需要将一个参数作为两个 int 参数传递给 Telerik Report 因为它不能接受长参数 将 long 拆分为两个 int 并在不丢失数据的情况下重建它的最简单方法是什么 使用掩蔽和移位是最好的选择 根据文档 long 保证为 64
  • 正在获取“未终止 [] 设置”。 C# 中的错误

    我正在 C 中使用以下正则表达式 Regex find new Regex url
  • 通过 cmake 链接作为外部项目包含的 opencv 库[重复]

    这个问题在这里已经有答案了 我对 cmake 比较陌生 经过几天的努力无法弄清楚以下事情 我有一个依赖于 opencv 的项目 它本身就是一个 cmake 项目 我想静态链接 opencv 库 我正在做的是我的项目中有一份 opencv 源
  • 将文本从文本文件添加到 PDF 文件[重复]

    这个问题在这里已经有答案了 这是我的代码 using FileStream msReport new FileStream pdfPath FileMode Create step 1 using Document pdfDoc new D

随机推荐

  • Java 流具有多个不同的属性

    我在流中有以下对象 class Foo String a String b int c 我想根据以下条件过滤流 例如 流中有条目 foo1 and foo2 foo1 and foo2具有相同的值a and b 但它们的不同之处在于c财产
  • 下面代码的时间复杂度?

    有人可以告诉我以下代码的时间复杂度吗 include
  • 使用 Jquery 的多级下拉菜单

    我想使用 jQuery 设计一个多级菜单 我已经写了一些代码 你可以看demohere http jsfiddle net 24ZvL 这一切都运行良好 但我想动态制作多级下拉菜单 Script ul menu gt li hover fu
  • Android getContext 在后台服务上

    我正在尝试创建一个Service即使我的应用程序关闭 它也会运行 但是 我需要使用我的应用程序Context里面这个Service 当应用程序运行时 该服务也可以工作 但是当我关闭应用程序 调用了 onDestroy 时 getContex
  • Safari 上的 facebook 应用程序 iframe 登录问题

    我有一个使用 iframe 的 Facebook 应用程序 facebook 在 iframe 中加载我的网站 当我单击链接时 我的网站会显示一个 iframe 使用 lightbox 来显示 Facebook 登录信息 在 ff 即 ch
  • 将访问令牌存储在客户端浏览器的会话存储中是否安全?

    我正在 Web API 中使用基于令牌的身份验证来对用户进行身份验证 我正在使用客户端浏览器会话存储来存储访问令牌 这样做安全吗 我应该把它存放在哪里才能更安全 btnLogin click function ajax Post usern
  • 我的 jQuery 切换类函数正在触摸屏设备上创建超链接效果

    当鼠标悬停在我的网站标题上时 我使用 jQuery 添加了 css 过渡效果 使其从透明背景变为白色背景 添加附加类时 我在触摸屏设备上遇到了一个非常奇怪且意想不到的问题 active 我只能假设这种情况发生在所有触摸屏设备上 因为我只有
  • 在每个循环中从 ArrayList 中删除对象

    我想从一个对象中删除一个对象ArrayList当我完成它时 但我找不到方法 尝试像下面的示例代码一样删除它是行不通的 我怎样才能到达当前的迭 代器px要删除这个循环中的对象吗 for Pixel px pixel if px y gt gH
  • 我应该选择哪个 C++ 信号/槽库? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想在不使用 QT 的项目中使用信号 槽库 我有非常基本的要求 使用任意数量的参数连接两个函数 信号可以
  • 删除不与 JpaRepository 一起使用的内容

    我有一个 spring 4 应用程序 我试图从数据库中删除实体的实例 我有以下实体 Entity public class Token implements Serializable Id SequenceGenerator name se
  • Delphi多线程文件写入:I/O错误32

    我创建了一个类 用于在文本文件中写入线程安全日志 使用CriticalSection 我不是 CriticalSection 和多线程编程 和 Delphi 的专家 我肯定做错了什么 unit ErrorLog interface uses
  • Spring Security 401未经授权,即使有permitAll

    我正在使用 Spring security 来保护 REST 服务中的某些端点 这是安全配置类 Configuration EnableWebSecurity EnableGlobalMethodSecurity securedEnable
  • 如何保存 LibSVM python 对象实例?

    我想在其他计算机上使用这个分类器 而不必再次训练它 我曾经使用 cPickle 从 scikit 保存一些分类器 对 LIBSVM 做同样的事情 它给了我一个 ValueError 包含指针的 ctypes 对象不能被腌制 我正在使用 Li
  • ASP.NET 用户控件类库

    是否可以创建包含 UserControls 的类库以便我可以重用它们 如果是这样 怎么办 标记是否与 dll 一起编译 谢谢你的帮助 您可以编译两者UserControls and Page进入类库 因为最终 这就是您的网站发布后发生的情况
  • 具有颜色渐变的 UIBezierPath

    我有一个关于 UIBezierPath 的问题 例如我有这条路径 现在我想要从白色到红色的颜色渐变 从左到右 这是我的代码 UIBezierPath bezierPath bezierPath UIBezierPath bezierPath
  • 使用 RVM 时如何安装 Ruby gems?

    我设置了 RVM 并用它来安装 Ruby 和其他一些库 当我浏览各种教程和其他技术 如 Rails 的设置时 我开始对我应该通过 RVM 做什么以及我应该按照教程建议做什么感到困惑 此处的 RubyGems 教程就是一个示例 http ru
  • scrapy如何制作自己的调度程序中间件

    我正在使用 Python 2 7 和 Scrapy 0 20 我的问题 如何构建我自己的调度程序 我尝试过的 我通过互联网阅读并发现了这一点 我必须创建自己的 python 类并使用 SCHEDULER MIDDLEWARES 在设置中分配
  • 生成不连续重复的随机数

    如何生成 0 4 之间的随机整数 并且不会连续两次生成相同的数字 例如 如果第一次生成的数字为3 则第二次随机生成的可能数字为0 1 2 4 如果第二次生成2 则第三次随机生成的可能数字为0 1 3 4 以此类推 int oldrand
  • Spring saml - 在 SP 上发起登录时如何记住请求参数,并在 IdP 响应后处理它们

    我想记住我的网站 SP 的第一个请求中的 url 请求参数 并在 IdP 响应后使用它们 我正在使用 spring saml 扩展并考虑 relayState 属性 但找不到如何使用请求中的参数构建它的示例 我需要在 sso 身份验证过程后
  • 时间复杂度 嵌套循环 内循环 + 外循环

    谁能解释一下这个算法的时间复杂度是多少 for i 1 i lt n i for j 1 j lt n j i note not j printf Iteration d d n i j The printf在内循环中称为exactly c