这个带有嵌套循环的函数的复杂度是多少?

2024-01-14

这段代码的复杂度是多少?

public class test5{
public static void main(String[] args) {
   int n = Integer.parseInt(args[0]);
   for (int i = 1; i<=n; i++) {
      for (int j = 1; j<=i; j++) {
         System.out.print ("*");
      }
   System.out.println();
   }

  for (int i = n; i>=1; i--) {
      for (int j = 1; j<=i; j++) {
         System.out.print ("*");
      }
   System.out.println();
   }
} 

}

我的假设是需要 O(n^2) 次操作,因为 n*(n/2) + n*(n/2)。 我对吗?


你是对的,第一个和第二个嵌套循环块都有一个严格的渐近上界——比如说T_A(n) and T_B(n),分别是O(n^2),因此函数作为一个整体运行为O(n^2),渐近。

您可以使用 Sigma 表示法来详细分析每个嵌套循环块的内部循环块中的基本操作数T_A(n) and T_B(n):

我们治疗过的地方System.out.print ("*");操作作为基本操作。

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

这个带有嵌套循环的函数的复杂度是多少? 的相关文章

  • 层序遍历的时间复杂度

    二叉树层次顺序遍历的时间复杂度是多少 是 O n 还是 O log n void levelorder Node n queue lt Node gt q q enqueue n while q empty Node node q fron
  • KMP 字符串搜索算法的最坏情况是什么? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 谁能建议我一个最坏情况的 文本字符串
  • 求以下代码的上限和下限

    我需要找到以下代码的最接近的上限和下限 我是这方面的初学者 对我的错误感到抱歉 p 的上限为 O log n 下限为 O 1 notp 的上限为 O log n 下限为 O 1 我认为下界是 O 1 因为如果我有 n 4 那么我进入循环并且
  • 稳定的比较排序,时间复杂度为 O(n * log(n)),空间复杂度为 O(1)

    在经历的同时维基百科的排序算法列表 https secure wikimedia org wikipedia en wiki Sorting algorithm Comparison of algorithms我注意到没有稳定的比较排序 h
  • Java 中 switch 的 McCabe 循环复杂度

    我使用的 switch 语句有 13 个案例 每个案例只有一行返回值 麦凯布将其涂成红色 有没有更简单的方法来编写一个大的 switch 语句 读起来似乎并不复杂 但我不喜欢默认设置变成红色 如果其他人在我的代码上使用相同的工具并看到红色的
  • for 循环的增长顺序复杂

    对于以下代码片段 N 的增长顺序是多少 int sum 0 for int i 1 i lt N i i 2 for int j 1 j lt N j j 2 for int k 1 k lt i k sum 我发现有 lgN 项 但我一直
  • 以原子方式从 Redis 数据结构中弹出多个值?

    是否有一个 Redis 数据结构 允许弹出 获取 删除 其中包含的多个元素的原子操作 有众所周知的 SPOP 或 RPOP 但它们总是返回单个值 因此 当我需要 set list 中的前 N 个值时 我需要调用该命令 N 次 这是昂贵的 假
  • 为什么以下两个重复查找算法的时间复杂度不同?

    我正在读这个question https stackoverflow com questions 3951547 java array finding duplicates 所选答案包含以下两种算法 我不明白为什么第一个的时间复杂度是O l
  • array[::-1] 的时间复杂度和空间复杂度是多少

    当在Python中反转列表时 我通常使用数组 1 进行反转 并且我知道更常见的方法可能是从列表的两侧进行交换 但我不确定这两种解决方案之间的区别 例如时间复杂度和空间复杂度 这两种方法的代码如下 def reverse array arra
  • 寻找最接近的斐波那契数列

    我正在尝试解决一个更大的问题 并且我认为该程序的重 要部分花费在低效的计算上 我需要计算给定数字 N 的区间 P Q 其中 P 是 到 N 的最小斐波那契数 目前 我正在使用地图来记录斐波那契数的值 查询通常涉及搜索最多 N 的所有斐波那契
  • Java Collections.sort(nodes) 使用什么排序?

    我认为是MergeSort 即O n log n 但是 以下输出不同意 1 0000000099000391 0000000099000427 1 0000000099000427 0000000099000346 5 0000000099
  • 在对数时间内找到未排序数组中的最小值

    是否有一种算法方法可以在对数时间 O logn 内找到未排序数组的最小值 或者只能在线性时间内实现 我不想并行 Thanks Michael 如果列表未排序 则您的搜索必须至少是线性的 每个项目你必须至少看一遍 因为任何你没看过的东西mig
  • Google Chrome 中 array.splice() 的时间复杂度是多少?

    如果我使用 splice 从数组中删除一个元素 如下所示 arr splice i 1 这会是O n 在最坏的情况下 因为它会移动 i 之后的所有元素 或者它是常数时间 下面有一些链表魔法 最坏的情况下should be O n 复制所有n
  • 查找集合列表中不相交集合对的数量

    问题陈述如下 给定一个包含 n 个集合的列表 每个集合包含 k 个整数 找到不相交集合对的数量 假设集合的可能元素为正 且上界为 c gt n 并且假设 k 我试图想出一种有效的算法来比 O kn 2 更快地解决这个问题 这是简单解决方案的
  • gsub的时间复杂度

    一根长绳子s仅包含0 and 1 这段 Ruby 代码计算了有多少个1有 s gsub 1 count Big O 表示法的时间复杂度是多少 有没有一个工具可以进行计算 据我所知 没有一个通用工具可以计算任意代码的 Big O 表示法 这将
  • 如何确定算法函数的复杂度?

    您如何知道算法函数对于特定操作是否需要线性 常数 对数时间 它取决于CPU周期吗 您可以通过三种方式 至少 做到这一点 在网上查找算法 看看它是如何描述其时间复杂度的 根据输入大小 自己检查算法 查看嵌套循环和递归条件等内容 以及每个循环运
  • shell脚本中关联数组的时间复杂度

    我想知道在 shell 脚本中使用关联数组时如何构造 实现 另外 我想知道基于 shell 脚本的关联数组的时间复杂度是否是最佳的 因为我们可以使用字母和数字作为它们各自的键 编辑 他们使用什么哈希函数 如果您使用关联数组 则不能通过 使用
  • 什么是大O表示法?你用它吗? [复制]

    这个问题在这里已经有答案了 什么是大O表示法 你用它吗 我想我错过了这门大学课程 D 有人使用过它并给出一些现实生活中使用它的例子吗 也可以看看 八岁孩子的大O https stackoverflow com questions 10716
  • 如何提高环复杂度?

    对于具有大量决策语句 包括 if while for 语句 的方法 循环复杂度会很高 那么我们该如何改进呢 我正在处理一个大项目 我应该减少 CC gt 10 的方法的 CC 并且有很多方法都存在这个问题 下面我将列出一些例如我遇到的问题的
  • 了解嵌套循环将运行多少次

    我试图了解下面的代码中语句 x x 1 作为 n 的函数执行了多少次 for i 1 i lt n i for j 1 j lt i j for k 1 k lt j k x x 1 如果我没记错的话 第一个循环就会被执行n次 还有第二次n

随机推荐