当前位置:网站首页>时间复杂度和空间复杂度分析技巧
时间复杂度和空间复杂度分析技巧
2022-07-17 00:17:00 【涛声依旧叭】
一、算法效率度量
如何度量一个算法的执行效率/时间呢?可以利用计算机的计时功能,来度量算法执行效率高低。这种方法也叫事后统计法。
事后统计法有很大的局限性:
- 测试结果依赖环境:不同的处理器、不同的操作系统等都会影响测试结果;即使是同一台物理机,Cpu使用率不一样也测试结果也可能不同。
- 测试结果受数据规模大小影响:数据规模的大小,直接决定了程序的运行时间。
通常分析一个算法效率优劣,不需要计算出具体的执行时间,而是粗略的预估算法的时间效率。
也就是时间复杂度分析方法。
二、时间复杂度
T(n) = O(f(n))
T(n)表示算法的执行时间,n表示数据规模。随着规模n的增大,算法执行时间的增长率和f(n)的增长率相同。叫做算法的渐进时间复杂度,简称时间复杂度。
大O表示算法的执行时间T(n)与f(n)成正比。
如何理解时间复杂度
- 它表示代码的执行时间随数据规模的增长趋势,不是具体的执行时间。
- 通常只是表示数据规模n很大时候的执行效率
如何计算时间复杂度
- 忽略常量、低阶、系数,只保留最高量级。
- 总得时间复杂度等于量级最大的那段代码的时间复杂度。
- 嵌套代码的复杂度等于嵌套内外代码复杂度的乘积。
几种常见的时间复杂度
- O(1)常量级:哈希表上的各种操作
- O(logn)对数级:二分查找、调表
- O(n)线性:数组、链表的遍历
- O(nlogn)快速排序、归并排序
- O(n^2)冒泡、插入、选择排序
- O(2^n)指数级:回溯穷举算法,例如八皇后问题
- O(n!):求全排列
最好、最坏、平均时间复杂度
例如:在一个数组中,找到值等于X的数据。我们需要遍历数组,依次每个元素equas寻找X。
1、最好情况的时间复杂度就是O(1)。(接口的最小响应时间)
2、最坏情况时间复杂度O(n)。(接口的最大响应时间)
3、平均时间复杂度: O(n)。(接口平均响应时间)
大多数情况下,平均时间复杂度,就是最差情况的时间复杂度。
4、均摊时间复杂度:是一种特殊的平均时间复杂度。常见的就是支持动态扩容的一些数据结构。
对一个数据结构进行一组连续操作中,大部分情况下时间复杂度都很低,只有个别情况下时间复杂度比较高,而且这些操作之间存在前后连贯的时序关系。
摊还分析法:这个时候,我们就可以将这一组操作放在一块儿分析,看是否能将较高时间复杂度那次操作的耗时,平摊到其他那些时间复杂度比较低的操作上。
在能够应用均摊时间复杂度分析的场合,一般均摊时间复杂度就等于最好情况时间复杂度。
三、空间复杂度
空间复杂度,是度量算法运行过程占用的存储空间,通常使用S(n)表示,n表示问题的规模。
S(n) = O(f(n))
常见的空间复杂度:O(1)、O(n)
- 空间复杂度 O(1)
代码中m、n所分配的空间都是常量级的,记作O(1)
int m = 1;
int n = 2;
- 空间复杂度 O(n)
代码中使用array数组保存变量,随着n的增大,数组所占用的内存也随之增加。记作O(n)
int[] array = new int[n]
for(i=0; i<n; ++i)
{
array[i] = i;
}
边栏推荐
- Gzip的动态压缩和静态压缩详解
- MySQL备份和恢复
- Redisson实现分布式锁的实战案例-锁单key-锁多key-看门狗
- SQL之CASE WHEN用法详解
- Sword finger offer 53 - I. find the number I in the sorted array
- Conditional statement of shell script
- Traversal of binary tree
- HCIA总结
- How to add software shortcuts to the right mouse button list
- Rhce8 Learning Guide Chapter 4 getting help
猜你喜欢

TCP的三次握手与四次断开

安装.NET提示“无法建立到信任根颁发机构的证书链”(方法简单有下载地址)

shell脚本之条件语句

Zabbix6.0通过iDRAC,IMM2监控DELL,IBM服务器硬件

HCIA总结

Win10 下OneDrive 失效重装

Shell script integer value comparison, logic test, if statement, extract performance monitoring indicators

Shell脚本整数值比较、逻辑测试、if语句、提取性能监控指标

JMeter response time test component & multi interface concurrency
![[solved] after referring to the local MySQL and forgetting the password, [server] --initialize specified but the data directory has files in it Aborti](/img/a8/2daa2c0d834f1986c8421bf5138c7e.png)
[solved] after referring to the local MySQL and forgetting the password, [server] --initialize specified but the data directory has files in it Aborti
随机推荐
纯虚函数
Chapter 1 - multi agent system
Shell脚本变量、脚本编写和执行(部署Apache与远程备份MySQL数据库)
认识交换机以及作用
Shell script case branch statement, pick the max address of anonymous login FTP
[unity Editor Extension] displays the memory size of all files in the resource directory
squid代理服务部署
Understand HTTP cache in 30 minutes
二进制安装kubernetes 1.23.2
描述DNS解析的工作过程
多层数据包结构及TCP三次握手
Shell脚本case分支语句、扒匿名登录FTP的max地址
DHCP原理与配置
ARM 交叉编译器命名规则
Leetcode buckle classic topic - 82 Maximum rectangle in column chart
Lintcode 366:fibonacci Fibonacci sequence
对工作节点执行drain操作时,通过pdb保护pod副本数
备份kubernetes 备份etcd数据
Win10 下OneDrive 失效重装
Circular statements and functions of shell scripts