数据结构时间复杂度问题

for(int i=1; i<n; i=i*2)
for(int j=1;j<n;j++)
count ++

你这个就是从1+2+4+8+...+(2^log(n-1)-1),算出这个来就可以了。

n(O的平方)
双循环。第一层的i=i * 2不改变时间复杂度。
假设n为10,那么i循环的复杂度是0.4 * n,j循环的复杂度是n,那么双循环复杂度是0.4 * n * n。
时间复杂度只看最高阶,不考虑对应的系数是多少(只要不是0)

复杂度大致可以理解为程序的循环需要跑多少次
在你的例子中,外层的复杂度是log(n,2),即若n为16,则会执行4(log(16,2)-1)次,对应1,2,4,8(此处的常数可以忽略,所以复杂度为log(n))
内层共执行5*n次,所以总复杂度为O(n*log(n))

常数系数为1/2,时间复杂度为O(n^2);

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632