当前位置: 首页 > 知识库问答 >
问题:

确定算法的时间复杂度

郎恺
2023-03-14

下面是我写的一些伪代码,给定一个数组A和一个整数值k,如果与k之和中有两个不同的整数,则返回true,否则返回false。我正试图确定这个算法的时间复杂度。

我猜这个算法在最坏的情况下的复杂度是O(n^2)。这是因为第一个for循环运行n次,该循环内的for循环也运行n次。if语句进行一次比较,如果为true,则返回一个值,这两个操作都是常量时间操作。最后的return语句也是一个常数时间操作。

我的猜测正确吗?我是新的算法和复杂性,所以请纠正我,如果我哪里出错了!

Algorithm ArraySum(A, n, k)
for (i=0, i<n, i++)
    for (j=i+1, j<n, j++)
        if (A[i]+A[j]=k)
            return true
return false

共有1个答案

燕烨
2023-03-14

Azodious的推理是不正确的。内循环并不简单地运行n-1次。因此,您不应该使用(外部迭代)*(内部迭代)来计算复杂性。

要注意的重要一点是,内循环的运行时随外循环的每次迭代而变化。

这是正确的,第一次循环运行时,它将执行n-1迭代。但在那之后,迭代的数量总是减少一个:

    null

请注意,您不能提供有意义的下限,因为算法可能在任何步骤后完成。这意味着算法的最佳情况是O(1)

 类似资料:
  • 算法的时间与空间复杂度 看到群里们小伙伴在讨论算法复杂度问题,之前在极客时间看了王争的《数据结构与算法之美》,看的我也晕呼呼的,跟上学时在学校老师的讲的有点不一样了,网上搜了下各种各样的,结合参考作一篇简单易懂的总结。 什么是算法 算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。 如何评价一个算法的好坏 一般我们会从以下维度来评估算法的优劣 正确性

  • 我已经通过谷歌和堆栈溢出搜索,但我没有找到一个关于如何计算时间复杂度的清晰而直接的解释。 说代码像下面这样简单: 说一个像下面这样的循环: 这将只执行一次。 时间实际上被计算为而不是声明。

  • 本文向大家介绍k-means算法的时间空间复杂度?相关面试题,主要包含被问及k-means算法的时间空间复杂度?时的应答技巧和注意事项,需要的朋友参考一下 时间复杂度为O(tmnK) t表示迭代次数,m表示数据个数,表示数据特征维度,K表示类簇数 空间复杂度为O((m+K)*n) m表示数据个数,K表示类簇个数,n表示维度,理解就是需要存储数据点和类中心点

  • 3. 算法的时间复杂度分析 解决同一个问题可以有很多种算法,比较评价算法的好坏,一个重要的标准就是算法的时间复杂度。现在研究一下插入排序算法的执行时间,按照习惯,输入长度LEN以下用n表示。设循环中各条语句的执行时间分别是c1、c2、c3、c4、c5这样五个常数[23]: void insertion_sort(void) 执行时间 { int i, j, key; for (j = 1;

  • 我有以下代码用于暴力方法,以确定二叉树是否平衡: 我不明白为什么最差情况下的运行时复杂度是O(n^2)当树是斜树的时候。我想的是,如果树是倾斜的,那么math . ABS(max depth(root . left)-max depth(root . right))行

  • 我最近了解了杂耍算法如何在线性时间内旋转数组 时间复杂度如何线性???