算法时间复杂度问题,题目如下,谢谢!

假设int类型的数组a含有n+1个元素,函数f的定义如下,那么,求f(0)的时间复杂度T(n)voidf(intj){inttem;if(j<n){if(j!=0)for... 假设int类型的数组a含有n+1个元素,函数f的定义如下,那么,求f(0)的时间复杂度T(n)

void f(int j)
{
int tem;

if(j < n){

if (j != 0) for(int i = j; i <= n; i *= 2) {temp = a[i]; a[i]=a[j];a[j]=temp;}
j++;

f(j);

}

}
展开
 我来答
未来需努力点缀
2012-12-08 · TA获得超过4679个赞
知道大有可为答主
回答量:850
采纳率:50%
帮助的人:529万
展开全部
楼主你好
大致是这样:
首先说:
for(i=1;i<=n;i*=2)
语句;
这个的循环的执行的次数
是:
og2 (n-1 +1)
log以2为底 n的对数 + 1

那么把 i=1换做j j是从1~n-1 因为 当j为n时函数结束

因此运行的次数就是:
j:1~n-1
(log2 (n-j+1))+1 的和
就是:
log2 (n!) +n

希望能帮助你哈
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式