int Sum(int i){ int j, s=0; if (i>0) for (j=1 ; j<=i ; j++) s+=j; return s; } void fun(int a[],int b[],int n){ int i; for (i=0 ; i<n;i++) b[i]=Sum(a[i]) ; } 假设a中n个正整数元素之和恰好为3n,分析fun(a,b,n)算法的时间复杂度。
时间: 2023-05-11 10:03:30 浏览: 170
2021年信息学奥赛CSP-J第一轮比赛真题详细答案解析
这是一个计算每个元素的Sum函数,然后将结果存储在另一个数组中的算法。Sum函数的时间复杂度为O(i),而fun函数中的循环会执行n次,因此fun函数的时间复杂度为O(n*i)。由于a中n个正整数元素之和恰好为3n,因此i的平均值为3。因此,fun函数的时间复杂度可以近似为O(n*3),即O(n)。
阅读全文