算法的时间复杂度和空间复杂度(java)
一、时间频度
时间频度:一个算法花费的时间与算法中语句的执行次数成正比例,那个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度
举例:
这里就只执行了一次。所以下面这段代码的执行时间要比上面的短很多。
二、时间复杂度
(1)一般情况下,算法的基本操作语句的重复执行次数是问题规模n的某个函数,用T(n)表示,若某个辅助函数f(n),使得当n趋近与无穷大时,T(n)/f(n)的极值为不等于零的常数,则称f(n)是T(n)的同数量级函数。
记做T(n)=o(f(n)),故O(f(n))为算法的渐进时间复杂度,简称时间复杂度。
(2)T(n)不同,但是时间复杂度可能相同,如T(n)=5n²+7n+5 与 T(n)=9n²+2n+1 时间复杂度都是O(n²)
(3)时间复杂度的计算方法 例如上面的:T(n)=5n²+7n+5 直接忽略常数项,一次项,以及最高次项的系数。
常见的时间复杂度
1、常数阶O(1)
2、对数阶O(log2^n)
3、线性阶O(n)
4、线性对数阶O(nlog2^n)
5、平方阶O(n^2)
6、立方阶O(n^3)
7、k次方阶O(n^k)
8、指数阶O(2^n)
常见时间复杂度对应图
常见的算法时间度由小到大排序: O(1)<O(log2^n) <O(n) <O(nlog2^n) <O(n2)<O(n3)
<O(n^k) <O(2^n)
n越大,时间复杂度增大,算法的执行效率越低
举例:
常数阶O(1)
无论这段执行了多少行,只要他没有循环结构,那么他的时间复杂度就是常数1,即使他有几千几万行代码,他的时间复杂度还是1.
对数阶O(log2^n)
在while循环里面,每次都将i乘2,乘完以后,i距离n也越来越近,循环到x次后,i也就大于2了,此时循环也就结束了,也就是说2的x次方等于n,那么x=log2^n
也就是当循环到log2^n次以后代码就结束了。 所以这段代码的时间复杂度为O(log2^n) ,如果i=i*3
,则对应的时间复杂度就是O(log3^n)
线性阶O(n)
再例如这段代码,for循环里面的代码会执行n遍,因此他消耗的时间是随着n的时间变化而变化的,因此这类代码的时间复杂度都可以用O(n)来表示。
线性对数阶O(nlog^n)
线性对数阶O(nlog^N)。 将时间复杂度为时间复杂度为O(log^n) 的代码循环N遍的话,那么他的时间复杂度就是n*O(log^N),
也就是O(log^N)。
平方阶O(n²)
双重for循环,那么他的时间复杂度就是O(n²) 如果将这里的n改成a,b 那么他的时间复杂度就是O(m*n)
三、空间复杂度
空间复杂度:定义为一个算法所耗费的储存空间。
空间复杂度跟算法需要占用的临时工作单元数与解决规模问题n有关,空间复杂度会随着时间复杂度的n的增大而增大,当n较大时,将占用较多的储存单元。
算法的时间复杂度和空间复杂度(java)相关推荐
- java中怎么计算算法的时间复杂度_算法的时间复杂度和空间复杂度计算
一.算法的时间复杂度定义 在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级.算法的时间复杂度,也就是算法的时间量度.记作:T(n) ...
- python排序算法的时间复杂度_Python算法的时间复杂度和空间复杂度(实例解析)
算法复杂度分为时间复杂度和空间复杂度. 其作用: 时间复杂度是指执行算法所需要的计算工作量: 而空间复杂度是指执行这个算法所需要的内存空间. (算法的复杂性体现在运行该算法时的计算机所需资源的多少上, ...
- 【数据结构与算法 10】算法的时间复杂度和空间复杂度
最近在研究数据结构与算法,在B站中找到了小甲鱼的<数据结构与算法课程>,挺有意思的! 尚硅谷Java数据结构与java算法,韩顺平数据结构与算法 对于一个算法来说,分析有两步,第一是从数学 ...
- 计算算法的时间复杂度和空间复杂度
算法的时间复杂度和空间复杂度-总结 通常,对于一个给定的算法,我们要做 两项分析.第一是从数学上证明算法的正确性,这一步主要用到形式化证明的方法及相关推理模式,如循环不变式.数学归纳法等.而在证明算法 ...
- 常用的排序算法的时间复杂度和空间复杂度
常用的排序算法的时间复杂度和空间复杂度 1.时间复杂度 (1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出 ...
- 关于算法的时间复杂度和空间复杂度的总结
一.算法的概念 算法(Algorithm)是将一组输入转化为一组输出的一系列计算步骤,其中每个步骤必须能在有限时间内完成.算法是用来解决一类计算问题的,注意是一类问题,而不是一个特定的问题. 二. ...
- 【算法的时间复杂度和空间复杂度】-算法02
算法的时间复杂度和空间复杂度 一个算法的好坏我们主要从"时间"和"空间" 两个维度来衡量 时间维度:是指执行当前算法所消耗的时间,我们通常用 "时间复 ...
- 常用的排序算法的时间复杂度和空间复杂度 .
常用的排序算法的时间复杂度和空间复杂度 排序法 最差时间分析 平均时间复杂度 稳定度 空间复杂度 冒泡排序 O(n2) O(n2) 稳定 O(1) 快速排序 O(n2) O(n*log2n) 不稳定 ...
- 各种常用排序算法的时间复杂度和空间复杂度
https://blog.csdn.net/jiajing_guo/article/details/69388331 一.常用排序算法的时间复杂度和空间复杂度表格 二.特点 1.归并排序: (1)n大 ...
- 【计算机基础】 经常使用的排序算法的时间复杂度和空间复杂度
经常使用的排序算法的时间复杂度和空间复杂度 排序法 最差时间分析 平均时间复杂度 稳定度 空间复杂度 冒泡排序 O(n2) O(n2) 稳定 O(1) 高速排序 O(n2) O(n*log2n) 不稳 ...
最新文章
- Spring源码分析【7】-Spring 模板页和JSP文件的编译
- 如何使用 BERT 进行自然语言处理?
- Session与Cookie区别[1][摘]
- PXC管理数据库服务器(引擎)
- 【QM-06】Material Specification(物料说明)续
- boost::process::child相关的测试程序
- tomcat 指定的服务未安装(总结验证)
- 柏林纪行(中):Node.js Collaboration Summit
- 软件工程——进展记录
- 在Pandas DataFrame中重塑数据
- 高可用MySQL:构建健壮的数据中心
- Innodb 的事物隔离级别实现原理(一)
- dockerfile入门
- Audition CC 2019 for Mac中文破解版永久激活方法附破解补丁
- CodeVS 1359 数字计数 51nod 1042 数字0-9的数量 Pascal
- shiro+jwt登录认证anon配置无效
- spring boot 访问路径404是会转到/error路径,倒是拦截器失效
- 安卓libc setenv函数内存泄漏
- 构建之法前三章读后感—软件工程
- linux防火墙在哪个位置,linux防火墙设置在哪
热门文章
- 24. yii2 表单赋值 model-load(), model-attributes 方法
- 16.进程间的通信:管道
- 7.2.Zeng_Cache(3) --- 前端
- XManager连接CentOS6.5
- vim创建程序文件自动添加头部注释/自动文件头注释与模板定义
- CentOS 上MySQL报错Can't connect to local Mysql server through socket '/tmp/mysql.scok' (111)
- /var/run/yum.pid 已被锁定,PID 为 XXXX 的另一个程序正在运行。
- silverlight打开和保存文件
- 测试一下各浏览器对CSS3的支持
- 认识XinYiCMS从这里开始!