一、引言:

写给自己看

算法是程序的灵魂,想学好算法就必须先搞懂时间复杂度

算时间复杂度就是算基本语句条数

5个例题

二、例题

1)、

for(int i=0; i

for(int j=i; j

System.out.println("执行一次");

}

}

i=0时,j=0,j循环执行n次

i=1时,j=1,j循环执行n-1次

i=2时,j=2,j循环执行n-2次

推广到

i=n-1时,j=n-1,j循环执行1次

Sn=n+n-1+n-2+...+1=n×(n+1)/2

时间复杂度为:O(n2)

2)、

i=0;

while((i+1)*(i+1)<=n){

i++;

}

第1次,i=1

第2次,i=2

推广到

第x次,i=x

设第x次退出循环,则(i+1)×(i+1)>n

x=i>(√n)-1 次

时间复杂度为:O(√n)

3)、

int i=1;

while(i

i = i*2;

}

第1次:i=21

第2次:i=22

第3次:i=23

......

第x次:i=2x

设第x次退出循环,则有i=2x ≥ n

取对数解得x=logn,共执行logn次

时间复杂度为:O(logn)

4)、

for(int i=1; i<=n; i++){

for(int j=1; j<=i; j++){

for(int k=1; k<=j; k++){

System.out.println("执行一次");

}

}

}

粗略的估计:

最外层i循环n次,j循环最坏的情况执行n次,k循环最坏的情况也执行n次,即时间复杂度为O(n3)

详细计算:

i=1时,j、k循环都只执行一次,输出语句执行1次

i=2时,j循环[1,2]执行2次,每一次分别有一个k循环,分别是[1,1]、[1,2]输出语句执行1+2次

i=3时,j循环[1,3]执行3次,每一次分别有一个k循环,分别是[1,1]、[1,2]、[1,3]输出语句执行1+2+3次

可以推广到

i=n时,j循环[1,n]执行n次,每一次分别有一个k循环,分别是[1,1]、[1,2]......[1,n]输出语句执行1+2+......+n次

总共:Sn=(1)+(1+2)+(1+2+3)+......+(1+2+3+...+n)

1~n项和取n2放大一点看就是n个这样的n2相加,即n3

时间复杂度为:O(n3)

5)、

for(int i=0; i

for(int j=2*i; j

System.out.println("执行一次");

}

}

粗略的估计

i=0时,j=0,内循环n次

即时间复杂度为O(n2)

详细计算

i=0时,j=0,[0,n)内循环n次

i=1时,j=2,[2,n)内循环n-2次

i=2时,j=4,[4,n)内循环n-4次

推广到

i=(n/2)-1,j=n-2,[n-2,n)内循环2次

i=n/2时,j=n,跳出循环

综上Sn=n+n-2+n-4+...+2

共n/2项,首项为n,公差-2

Sn=(((n/2)×[(n/2)-1)]×(-2)/2) + (n/2)×n

输出语句执行了(n2+2n)/4次

时间复杂度为:O(n2)

三、总结

一定要学会算时间复杂度

很重要

很重要

很重要

java求时间复杂度求值_计算时间复杂度例题(示例代码)相关推荐

  1. java 地址反查邮编_地址查邮编示例代码

    package api.binstd.zipcode; import java.net.URLEncoder; import api.util.HttpUtil; import net.sf.json ...

  2. java 车牌号归属地_获取车牌类型示例代码

    package api.jisuapi.illegal; import api.util.HttpUtil; import net.sf.json.JSONArray; import net.sf.j ...

  3. Java获取上海期货交易所数据_上海期货交易所价格示例代码

    package api.binstd.silver; import api.util.HttpUtil; import net.sf.json.JSONArray; import net.sf.jso ...

  4. java南方八字排盘_八字排盘示例代码

    package api.jisuapi.bazi; import api.util.HttpUtil; import net.sf.json.JSONArray; import net.sf.json ...

  5. 数据结构 算法的时间复杂度与空间复杂度的计算(带有例题讲解)

    时间复杂度 对于算法时间复杂度的分析需要牢记一句话:将算法中基本操作的执行次数作为算法时间复杂度的度量.时间复杂度并不是执行完一段程序的总时间,而是其中基本操作的总次数. 在考试的算法题目中你总能找到 ...

  6. java printwriter 文件,java使用PrintWriter写文件,javaprintwriter写,下面示例代码演示使用Pr...

    java使用PrintWriter写文件,javaprintwriter写,下面示例代码演示使用Pr 下面示例代码演示使用PrintWriter方法写文件. PrintWriter的构造函数接受Fil ...

  7. 利用栈求表达式的值_高一数学月考考点之函数的表达式详解

    函数表达式考点详解,教你轻松学函数 Hello,大家好,这里是摆渡学涯.很高兴在这里跟大家分享知识哦.这次课程我们来为大家讲一下函数表达式相关的考点,教你轻松学函数. 基本概念 什么是函数表达式呢?我 ...

  8. 拉马努金求 MATLAB,圆周率值的计算毕业论文.doc

    PAGE 精品文档 知识共享 南 京 师 范 大 学 泰 州 学 院 毕 业 论 文(设 计) ( 一 一 届) 题 目: 漫谈圆周率π值的计算 院(系.部): 数学科学与应用学院 专 业: 数学与应 ...

  9. Java中的Hash值的计算方式,java哈希算法简单数据类型的具体实现

    最近被提及Java中HashMap的一些实现及哈希冲突等,借鉴了一位老哥的部分解析,比较明白的展示hash算法的应用吧 结论: 对于String.Integer等类复写了Object中的hashCod ...

最新文章

  1. PTA 基础编程题目集 7-27 冒泡法排序 C语言
  2. 如何在网页中添加flash文件
  3. mc pe Linux服务器,MC 基岩版(PE) 服务器来了
  4. 我来出个题:这些事务会不会回滚?大概率你会错!
  5. python读取txt文件内容-python如何获取txt文本文件中的内容
  6. python中的chr和ord函数_python chr()和ord() | 学步园
  7. 微信开发系列之十 - 在SAP C4C接收微信发送过来的服务请求回应
  8. java linux 调用32位so_Linux上TCP的几个内核参数调优
  9. 36日期计算包含计算某月某日是星期几的公式
  10. php5中this_self_parent关键字用法讲解
  11. 怎样用UE4把一个Actor直接打包成Pak
  12. 国家统计局:政府统计应用大数据的主要障碍
  13. 16位深度图像转8位灰度
  14. 【k8s系列5】KubernetesClientException: too old resource version 原因分析
  15. “绿水青山就是金山银山”
  16. Trove 3.0.0
  17. 三基色、三原色的区别
  18. 已拿offer热乎乎的蚂蚁金服面经分享,建议收藏(Java岗、附答案)
  19. 优化器:torch.optimizer
  20. 技术宅男买房记之建筑日照采光计算

热门文章

  1. pc酷狗网页最简洁代码2023最新
  2. Vue 使用 embed 标签实现在线查看PDF
  3. 集合(Collection、Map)
  4. C#MVC视频上传并实现页面播放
  5. Struts2拦截器-day04下
  6. centos基本信息和ssh
  7. Android动画Animator家族使用指南
  8. Vue3 第十七篇:使用JSX轻松实现Logo组件
  9. 详解ImageNet 2017夺冠架构SENet
  10. Win10家庭版不支持“本地用户和组”,如果要支持需要升级到专业版