千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:深圳千锋IT培训  >  技术干货  >  小白学Java之另一个算法评测标准---空间复杂度

小白学Java之另一个算法评测标准---空间复杂度

来源:千锋教育
发布人:小C
时间: 2023-03-29 10:52:00

  前言

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

千锋教育

  一. 空间复杂度的概念

  空间复杂度(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

小白学Java之什么是跨域vue?如何实现跨域

2023-05-29

小白学Python之互联网数据分析之搭建指标体系(四)

2023-04-11

小白学Java之Nginx介绍

2023-03-28

最新文章NEW

小白学Java之socket是什么有什么作用

2023-05-30

哪些语言可以用来开发网络爬虫程序

2023-05-29

小白学Java之DML数据操作(增删改)

2023-05-23

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>