Chapter3 复杂度分析(上):如何分析,统计算法的执行效率和资源消耗
数据结构解决的问题:“快” + “省”,即为时间,空间复杂度分析
1:为什么需要复杂度分析?
因为通过统计手段分析的结果受到两个因素的影响,一:测试结果非常依赖测试环境,二:测试结果受数据规模的影响很大
2:大O复杂度表示法
所有代码的执行时间T(n)与每行代码的执行次数n成正比。
T(n) = O(f(n))
3:时间复杂度分析: 渐进时间复杂度
1:只关注循环执行次数最多的一段代码
2:加法法则:总复杂度等于量级最大的那段代码的复杂度
3:乘法法则:嵌套代码的复杂度等于嵌套内外代码复杂度的乘积
4:几种常见时间复杂度量级:
多项式量级:
u 常数阶O(1)
u 对数阶O(logn)
u 线性阶O(n)
u 线性对数阶O(nlogn)
u 平方阶O(n*n),立方阶O(n*n*n)… k方阶O(n*……*n)
非多项式量级:
u 指数阶O(2*……*2)
u 阶乘阶O(n!)
5:空间复杂度分析: 渐进空间复杂度
常见的空间复杂度:O(1) O(n) O(n*n)
Chapter3 复杂度分析(上):如何分析,统计算法的执行效率和资源消耗的更多相关文章
- 《数据结构与算法之美》 <01>复杂度分析(上):如何分析、统计算法的执行效率和资源消耗?
我们都知道,数据结构和算法本身解决的是“快”和“省”的问题,即如何让代码运行得更快,如何让代码更省存储空间.所以,执行效率是算法一个非常重要的考量指标. 那如何来衡量你编写的算法代码的执行效率呢?这里 ...
- 【数据结构&算法】02-复杂度分析之执行效率和资源消耗
目录 前言 复杂度 分析方法 大 O 复杂度表示法 例子-评估累加和的各种算法执行效率 算法 1(for 循环): 算法 2(嵌套 for 循环): 大 O 表示 时间复杂度分析 关注执行最多的一段代 ...
- 统计sql语句执行效率
--统计sql语句执行效率SELECT (total_elapsed_time / execution_count)/1000 N'平均时间ms' ,total_elapsed_time/1000 N ...
- MySQL慢日志线上问题分析及功能优化
本文来源于数据库内核专栏. MySQL慢日志(slow log)是MySQL DBA及其他开发.运维人员需经常关注的一类信息.使用慢日志可找出执行时间较长或未走索引等SQL语句,为进行系统调优提供依据 ...
- DevEco Device Tool 2.1 Beta1在Hi3861开发板上可视化分析的体验
DevEco Device Tool迎来了2.1 Beta1,新版本有很多亮点.在上次"DevEco Device Tool 2.1 Beta1 的Hi3861在Windows平台的编译体验 ...
- R与数据分析旧笔记(六)多元线性分析 上
> x=iris[which(iris$Species=="setosa"),1:4] > plot(x) 首先是简单的肉眼观察数据之间相关性 多元回归相较于一元回归的 ...
- 线上bug分析
昨天下午大神把组内几十号人召集在一起开Online bug分析大会,主要是针对近期线上事故从事故原因和解决方案两个维度来分析. 对金融软件来说,每一次的线上事故都有可能给公司带来重大的损失,少扣了用户 ...
- TOMCAT8源码分析——SESSION管理分析(上)
前言 对于广大java开发者而已,对于J2EE规范中的Session应该并不陌生,我们可以使用Session管理用户的会话信息,最常见的就是拿Session用来存放用户登录.身份.权限及状态等信息.对 ...
- TOMCA源码分析——处理请求分析(上)
在<TOMCAT源码分析——请求原理分析(上)>一文中已经介绍了关于Tomcat7.0处理请求前作的初始化和准备工作,请读者在阅读本文前确保掌握<TOMCAT源码分析——请求原理分析 ...
随机推荐
- VMware vSphere Client(Vcenter)上传ISO镜像
.登录Vcenter后选择"数据存储与数据存储集群" .选择存储的路径,右键-选择“浏览数据存储” .点击上传图标,并上传指定的ISO文件
- day15_python_1124
03序列化模块 04加密模块 05 os sys 模块 06 collections 模块 # 03 序列化模块 # 网络传输数据:字节 bytes# 文件写入内容:bytes , str # dic ...
- leetcode python 007
## 翻转整数def evert(int0): if int0<0: flg=1 else: flg=0 e=int(str(int0)[flg: ...
- UDP协议学习(转)
reference: https://blog.csdn.net/s_lisheng/article/details/73538229 https://blog.cs ...
- A JSON example
heroes.html<!DOCTYPE html> <html> <head> <meta charset="utf-8"> &l ...
- Netty的ByteToMessageDecoder/LengthFieldBasedFrameDecoder
是个inbound handler,channelRead方法里面,用一个bytebuf(cumulation)来把下一个数据包和当前这一个拼在一起,以免同一个请求被拆包.然后callDecode,里 ...
- Oracle数据库统一审核的启用测试与关闭
环境:windows server 2008.Oracle 12c R2 下面的步骤,连接为sysdba,除非指定了其它方式. (1)运行如下查询,确定统一审核是否启用了: select value ...
- JavaScript 注意要点
何时加引号: 只有变量不加引号.加了引号的一定不是变量,是字符 方法: 方法一律带有小括号 js 中的作用域 全局变量: 在最外层定义的变量: 在函数体内部看是没有声明var的 也是全局 ...
- oracle 查看字段说明
SELECT *FROM all_col_commentsWHERE table_name = UPPER ('t_bn_background')AND OWNER = 'VTER' ...
- C# 数据推送 实时数据推送 轻量级消息订阅发布 多级消息推送 分布式推送
前言 本文将使用一个NuGet公开的组件技术来实现数据订阅推送功能,由服务器进行推送数据,客户端订阅指定的数据后,即可以接收服务器推送过来的数据,包含了自动重连功能,使用非常方便 nuget地址:ht ...