分析时间复杂性的问题

时间:2016-09-10 21:28:40

标签: algorithm time-complexity

您好我对以下两个代码片段的分析有疑问:

1)

    for (i = 1; i <= 1.5n; i++)
        for (j = n; j >= 2; j--)
            cout << i, j;

外循环执行1.5n次,内循环执行n-2次。因此,复杂度为O(1.5n *(n-2)= O(n ^ 2)≤

2)

    j = 1;
    while (j < n/2) {
        i = 1;
        while (i < j) {
            cout << j << i;
            i++;
        }
        j++;
    }

外部while循环将执行n / 2次,内部while循环将执行1 + 2 + ... + n / 2次。因此,复杂性也是O(n ^ 2)?

我对第二个问题的分析不太确定。

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

你是对的。正确的解决方案是计算。

请注意:

log1p

具有log1p复杂度,而:

j = 0;
while (j < n/2) {
    j++;
}

具有O(n)复杂度。