1、找出下面程序段的基本操作,计算该操作的频度及程序段的时间复杂度。
(1)k=0;
for( i=1; ị<=n; ¡++) {
for (j=i;j<=n; j++)
k++;
}
(2) for( i=1; ị<=n; i++) {
for (j=1; j<=; j++) {
for(k=1;k<=j;k++)
x+= 2;
}
}
(3)i=1;
while(i<n) i*=3
(1)O(n^2)
(2) j<=; 这里是什么东西
(3)O(logN)
【以下回答由 GPT 生成】
分析: 程序段1中,外层循环i从1到n,内层循环j从i到n,所以内层循环会执行 n-i+1 次。因此,总的执行次数为:
1 + 2 + 3 + ... + (n-1) + n = n*(n+1)/2
因此,程序段1的频度是 n*(n+1)/2,时间复杂度是 O(n^2)。
程序段2中,外层循环i从1到n,内层循环j从1到i,最内层循环k从1到j,所以最内层循环会执行 j 次,次内层循环执行 i 次。因此,总的执行次数为:
1 + 2 + 3 + ... + (n-2) + (n-1) + n
因此,程序段2的频度是 n(n+1)(n+2)/6,时间复杂度是 O(n^3)。
答案用markdown格式返回: 程序段1的频度是 n(n+1)/2,时间复杂度是 O(n^2)。 程序段2的频度是 n(n+1)*(n+2)/6,时间复杂度是 O(n^3)。
【相关推荐】