这个算法的大O成本函数是什么?

ʞɔı*_*ɔıu 3 algorithm big-o

你如何用big-O表示法描述下面的内容?

rotors = [1,2,3,4,5 ...]
widgets = ['a', 'b', 'c', 'd', 'e' ...]

assert len(rotors) == len(widgets)

for r in rotors:
    for w in widgets:
        ...

    del widgets[0]
Run Code Online (Sandbox Code Playgroud)

Mat*_*hen 7

它是O(n ^ 2).您可以看到内循环执行的数量是:

n + (n - 1) + (n - 2) + ... + 1
Run Code Online (Sandbox Code Playgroud)

因为每个外部循环迭代都会删除一个窗口小部件.即(n ^ 2 + n)/ 2,即O(n ^ 2).


Mla*_*dic 5

因为你经历了两个循环,所以它是O(n ^ 2).

  • 这是一个过于简单化的论点.但在这种情况下确实恰好是正确的. (4认同)