这个C ++代码的时间复杂度是多少

时间:2020-10-21 10:03:34

标签: c++ time-complexity

我才刚刚开始学习时间复杂度,如何找到以下代码的时间复杂度

engine="openpyxl"

仅考虑循环时,时间复杂度将为O(n)。但是考虑内部函数和返回值呢?我想知道它如何影响时间复杂度。
感谢您的任何帮助,谢谢

2 个答案:

答案 0 :(得分:3)

这是O(N)。

  • 在理想情况下,每个值的num[i] > num[0]都为false,则for循环将迭代该序列,不进行任何交换或反转,然后您就完成了。 O(N)。
  • 如果任意配对导致num[i] > num[0] true ,则将交换一对(O(1)),迭代其余序列,然后反转它们(O(N)),然后再完成一次辛苦的return;

即,这是O(N)。

答案 1 :(得分:2)

交换函数本质上是O(1),因为它具有交换两个索引的一组操作数。另一方面,反向函数为O(n),因为它遍历整个数组以将其反向,如documentation

所示

因此,假设您要反转数组n次(假设j在for循环中可以为0),那么我想说,如果您没有return语句,则复杂度将达到O(n ^ 2)。 / p>

使用return语句,您不会在每次迭代中反转数组,而是在退出后仅反转一次。所以O(n)(for循环)+ O(n)(反向)= O(n)