我爱占星网 我爱占星网
首页
编程
java
php
前端
首页 编程 java php 前端

这个时间复杂度怎么算

k=0;
while(n>=1) //设n为2^t
{
for(j=1;j<=n;j++)
{
k=k+1;
n=n/2;
}
}

答案:内层循环:2^t<=n,t<=log2n,外层循环:1
T(n)=T1(n)*T2(n)=O(log2n)*O(1)=O(log2n)

我一般遇到这种时间复杂度的问题,就是笨笨的想:代码块,它会执行的次数。

img


貌似外层的while循环,内部循环n的变化趋于while的执行次数常数次,也就是O(n) 这与n的初始值以及第一次内部计算出的n的最终值变化有关,

近期文章

  • 希望能得到的帮助,三克油
  • uva提交有问题要怎么办
  • vs2019未能正确加载解决方案中的一个或多个项目
  • 请问我这个代码有什么问题吗
  • <算法导论第三版>的伪代码写的C++的归并排序
  • 为什么我的cscode运行c#提醒这个什么意思啊呜
  • 拍皮球,C语言,for循环
  • 请问,Harris关键点的数量怎么求,用什么代码可以呢?
  • 从两个表中选择并按时间戳排序
  • java小练习计算分数循环
  • macos的vscode报错这是怎么回事?
  • idea中PrintWriter找不到合适的构造器如何解决
  • 关于shiro密码比对的疑惑
  • 禾川 Q1 modbus rtu
  • 如何保证扣款中的幂等性
  • 请问这个代码哪里有问题呢
  • 不同主机上的Ubuntu虚拟机如何成功ping通?
  • 计算机组成原理判断对
  • 在Php和装饰模式中路由
  • 树形结构的层级关系如何表设计

Copyright ©2022 我爱占星 All Rights Reserved.

浙ICP备2022030071号-1

部分图文来自网络,如有侵犯您的版权,请告诉我们删除

友情链接:代码精华