我如何阐明 O(n^3) 函数的时间复杂度?

问题描述 投票:0回答:1

对于这样的伪代码算法:

Algorithm fn(A, S):
    Inputs: array A of n integers
            integer S

    for i from 0 up to n - 1:
        for j from i + 1 up to n - 1:
            for k from j + 1 up to n - 1:
                if A[i] + A[j] + A[k] == S:
                    return true

    return false

为什么它最坏情况的时间复杂度是O(n^3)。我是大 O 表示法的新手,我需要一些帮助来解释为什么这个函数的最坏情况是 O(n^3)。我推断它是 O(n^3),因为它有三个 for 循环;但是,我也觉得这是一种肤浅的认识。

c for-loop time-complexity big-o pseudocode
1个回答
0
投票

您所展示的是多项式时间算法的示例。你是对的,最坏的情况是来自三个嵌套 for 循环的

O(n^3)

此示例中最糟糕的情况是,直到最后一次可能的嵌套迭代才找到

A[i] + A[j] + A[k]
intger S
的值之间的匹配。相反,最好的情况是第一次就找到匹配。

© www.soinside.com 2019 - 2024. All rights reserved.