小白学Java之另一个算法评测标准---空间复杂度
前言
在上一篇文章中,耀哥给大家介绍了时间复杂度的概念,这一次耀哥将会给大家介绍评价算法优劣的另一个评测标准---空间复杂度。
一. 空间复杂度的概念
空间复杂度(Space Complexity),是对一个算法在运行过程中临时占用存储空间大小的量度。值得注意的是,时间复杂度不是用来计算程序具体耗时的,空间复杂度也不是用来计算程序所占的具体内存大小,它们都只是一个量度而已。
二. 常见的空间复杂度
1. 常数阶O(1)
int sum = 0;
for(int i=0;i<n;i++){< p="">
sum=sum+i;
}
此例中,不管n变得多大,都只有2个变量占用内存,内存的占用是一个常数,记住O(1)即可。
1. O(n)
int sum = 0;
for(int i=0;i<n;i++){< p="">
sum=sum+i;
int m = sum;
}
我们注意看此案例中,在for循坏中,变量m一共被声明了n次,再加上sum与i的声明,一共分配的内存有n+2次。其中,2可以忽略,所以算法的空间复杂度为O(n)
1. O(Log2N)
2. 另一个常见的空间复杂度是O(Log2N),我们来看看下面这段代码,它的空间复杂度就是O(Log2N),大家自己考虑一下是不是这样?
int sum = 0;
for(int i=0;i<n;i++){< p="">
sum=sum+i;
int m = sum;
i= 2*i;
}
三. 结语
经过以上几个案例,耀哥大致给同学们介绍了一下常见的几种空间复杂度。值得注意的是,随着计算机行业的迅速发展,计算机的存储容量已经达到了很高的程度。所以我们如今已经不再需要特别关注一个算法的空间复杂度,大多数时候都是用空间换取时间。但如果是某些存储容量比较小的微控制器,例如单片机等,还是需要考虑一下空间复杂度的。
猜你喜欢LIKE
相关推荐HOT
更多>>哪些语言可以用来开发网络爬虫程序
可以用多种编程语言来开发网络爬虫程序,其中比较流行的语言有:1.Python:Python是目前最为流行的网络爬虫编程语言之一,因为它有许多用于网络...详情>>
2023-05-23 10:56:063分钟带你学会APP的功能测试
很多小伙伴不知道APP的功能应该怎么测试,其实APP与WEB一样,功能测试主要也是测试软件的功能特性。但APP又与WEB不一样,因为一个是C/S架构,一...详情>>
2023-05-16 11:17:00牢记这些点,掌握写好自动化测试用例的宝典
今天为大家带来的是自动化用例设计宝典,目前在从事自动化工作的小伙伴,可得认真查看啦.一.自动化测试的目的首先我们必须要明确,自动化测试的目...详情>>
2023-05-16 11:15:20小白学Python之数据分析可视化之热力图
热力图,热力图中的每个值都被表示为一个颜色数据。 import seaborn as sns import pandas as pd import numpy as np详情>>
2023-04-04 11:13:00