我正在阅读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
你能帮我吗?
谢谢!
答案 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 )。