首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

for(i=一;i<=n;i++) for(j=2*i;j<=n;j++)的时间复杂度是

2013-01-20 
for(i1ini++) for(j2*ijnj++)的时间复杂度是?for(i1ini++) for(j2*ijnj++)的时间复杂

for(i=1;i<=n;i++) for(j=2*i;j<=n;j++)的时间复杂度是?
for(i=1;i<=n;i++) for(j=2*i;j<=n;j++)的时间复杂度 是什么?
是O(n*n)还是O(n*log(n))? 求详细解释,最好能用数学证明下。for(i=一;i<=n;i++) for(j=2*i;j<=n;j++)的时间复杂度是
[解决办法]
O(n^2)
公式是n+(n-2)+(n-4)+...,一共[n/2]个。当n为偶数的时候它就是2+4+6+...+n=n*(n+2)/4。
[解决办法]
对于内层循环,次数是n - 2 * i + 1, 对于外层循环,i范围其实是1 - n / 2 (在后面的内层循环直接跳出),累加和为 ((n - 2 * 1 + 1) + (n - 2 * n / 2 + 1)) * (n / 2) / 2 (等差数列求和公式) 得出时间复杂度 O ( n * n )

热点排行