ITPub博客

首页 > 数据库 > 数据库开发技术 > 碎片学习|三分钟弄懂算法核心指标之空间复杂度

碎片学习|三分钟弄懂算法核心指标之空间复杂度

原创 数据库开发技术 作者:Finally_m 时间:2023-03-21 08:00:00 0 删除 编辑

关注Java架构栈,干货天天都不断哦!


 前言


在上一篇文章中,耀哥给大家介绍了时间复杂度的概念,这一次耀哥将会给大家介绍评价算法优劣的另一个评测标准---空间复杂度。


 空间复杂度的概念


空间复杂度(Space Complexity),是对一个算法在运行过程中临时占用存储空间大小的量度。值得注意的是,时间复杂度不是用来计算程序具体耗时的,空间复杂度也不是用来计算程序所占的具体内存大小,它们都只是一个量度而已。


 常见的空间复杂度


1.常数阶O(1)

int sum = 0;
for(int i=0;i<n;i++){
    sum=sum+i;
}

此例中,不管n变得多大,都只有2个变量占用内存,内存的占用是一个常数,记住O(1)即可。


2.O(n)

int sum = 0;
for(int i=0;i<n;i++){
    sum=sum+i;
    int m = sum;
}


我们注意看此案例中,在for循环中,变量m一共被声明了n次,再加上sum与i的声明,一共分配的内存有n+2次。其中,2可以忽略,所以算法的空间复杂度为O(n)


3.O(Log2N)

另一个常见的空间复杂度是O(Log2N),我们来看看下面这段代码,它的空间复杂度就是O(Log2N),大家自己考虑一下是不是这样?

int sum = 0;
for(int i=0;i<n;i++){
    sum=sum+i;
    int m = sum;
    i= 2*i;
}


 结语


经过以上几个案例,耀哥大致给同学们介绍了一下常见的几种空间复杂度。


值得注意的是,随着计算机行业的迅速发展,计算机的存储容量已经达到了很高的程度。所以我们如今已经不再需要特别关注一个算法的空间复杂度,大多数时候都是用空间换取时间。但如果是某些存储容量比较小的微控制器,例如单片机等,还是需要考虑一下空间复杂度的。


END


近期课程上新:
Java基础 | Javaweb基础 | Java高级框架 | 微服务架构 | TiDB分布式数据库入门最佳实践 | VUE全面剖析及前后端联动实战 | 23种设计模式 | 企业级项目实战 | Java面试宝典


原文作者:Java架构栈;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2021-04-13

  • 博文量
    573
  • 访问量
    243785