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

手机站
千锋教育

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

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

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

当前位置:首页  >  技术干货  > 另一个算法评测标准---空间复杂度

另一个算法评测标准---空间复杂度

来源:千锋教育
发布人:yyy
时间: 2023-06-29 10:47:00 1688006820

  前言

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

  一. 空间复杂度的概念

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

  二. 常见的空间复杂度

 常数阶O(1)

  int sum = 0;

  for(int i=0;i<n;i++){< p="">

  sum=sum+i;

  }

   此例中,不管n变得多大,都只有2个变量占用内存,内存的占用是一个常数,记住O(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)

 O(Log2N)

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

 int sum = 0;

  for(int i=0;i<n;i++){< p="">

  sum=sum+i;

  int m = sum;

  i= 2*i;

  }

   三. 结语

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

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT