开发者社区> 问答> 正文

复杂度分析,使数组中的每个元素等于最大元素

给定代码作为问题大小n的函数的复杂度是多少?这是我分析的详细信息。

for (int i = 0; i < 2*n; i++) { if (i == n) { for (int j = 0; j < i; j++) for (int k = 0; k < i; k++) O(1) } else { for (int j = 0; j < i; j++) O(1) } } 到目前为止,我的想法是:

if语句不能总是为true(可以为log n)。嵌套的for循环内部为n ^ 2。

展开
收起
小六码奴 2019-10-03 19:33:01 794 0
1 条回答
写回答
取消 提交回答
  • 如果不使用if(i == n) {},则操作数为:

    1 + 2 + 3 + 4 + 5 + ... + n*2

    = (2n * (2n-1))/2 但是在i==n,操作的数量i与其余的不同,而是i²。因此,最终的操作数为:

    ((2n * (2n-1))/2) - n + n² 上面的大O表示法是O(n²)

    2019-10-09 16:28:50
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载