嵌套if-else循环的时间复杂度

时间:2018-10-12 01:31:35

标签: c++ time-complexity

std::unordered_map

此算法的时间复杂度是多少?是O(n * n)吗? 这是geekforgeeeks网页上的问题。您如何处理else语句中的循环?

1 个答案:

答案 0 :(得分:0)

将代码分成多个部分,找到每个部分的运行时。

外部for循环为O(n)。

每次调用该循环时,都会调用while循环。因此,您将乘以两个循环的复杂性。

要弄清楚while循环的运行时间,必须查看if和else块。如果if块每次都运行,则while循环将具有O(n)复杂度。如果else部分每次都运行,则while循环将具有O(n ^ 2)复杂度。

如果我们考虑最坏的情况,那么您将忽略if块运行时。因此,while循环的运行时为O(n ^ 2),它通过外部for循环被调用n次。

因此,所有运行时都应为O(n ^ 3)。