计算复杂性练习

时间:2009-03-20 05:05:37

标签: complexity-theory big-o

我正在阅读Aho,Hopcroft& Sons的“数据结构和算法”。 Ullman,我对练习1.12 B感到困惑:

这个Pascal过程的计算复杂度(用Big O表示法表示)是什么?

procedure mysterious( n: integer );
    var
        i, j, k: integer;
    begin
        for i := 1 to n - 1 do
             for j := i + 1 to n do
                 for k := 1 to j do
                    {mysterious statement of O(1)}
    end

你能帮我吗?

谢谢!

1 个答案:

答案 0 :(得分:6)

是O(n 3 )。 big-O显示执行时间(或内存或其他)与任务大小成正比(省略比例系数)。

在这种情况下,内部语句的执行时间与(n 3 )成比例。我从1运行到(n-1) - 所以外循环内的所有内容都执行(n-1)次。 j从(n / 2)到(n)平均运行 - 所以内部的所有内容都执行(n-1)*(n / 2)次。 k平均从1到(3/4 * n)运行。这会得到内部语句的(n-1)*(n / 2)*(3/4 * n-1)次执行。这是O(n 3 )。