java - 使数组中的每个元素都等于最大元素的复杂性分析
问题描述
作为问题大小 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 语句并不总是正确的(可能是 log n)嵌套的内部 for 循环是 n^2。
任何有关如何解决它或如何继续它的帮助将不胜感激。
谢谢你。
解决方案
没有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²)
推荐阅读
- python - 如何制作任何文本的第一个字母的快捷方式?
- java - 改造不适用于特定版本的android
- php - Woocommerce 几个类别显示较少的产品
- python - 运行 run_squad.py 微调 Google BERT 模型时加载(恢复)TensorFlow 检查点失败(官方 tensorflow 预训练模型)
- swift - 所有任务完成后segue代码崩溃?
- java - Maven 错误:在 Spring Cloud 配置的这一行中发现了多个注释
- asp.net - 如何在 ASP.Net WebForms 中使用 SignalR 实时图表
- css - 在带有触摸屏的设备上禁用 CSS 规则
- php - 如何在函数外键入值
- node.js - 显示 findOne 的输出:Object 对象