算法的好坏有两个指标:需要的内存空间(可以 理解为运行代码需要的内存空间),代码运行的时间(可以简单的理解为代码需要执行的步数)

程序的设计要不就是时间换空间,要不就是用空间去换时间。并且时间和空间是可以进行相互转化的:对于执行的慢的程序,可以通过消耗内存(即构造新的数据结构)来进行优化。而消耗内存的程序,也可以多消耗时间来降低内存的消耗。

下面举个简单的例子:比如要写一个两个值互换的算法

//时间换空间
int a = 5;
int b = 10;
a = a+b;//得到a值为15
b = a-b;//得到b值为5
a = a-b;//得到a值为10//空间换时间
int c = 5;
int d = 10;
int e = c;//得到e为5
c= d;//得到c值为10
d = e;//得到d值为

结论:第一个a和b互换值的算法:总共进行了3次加减运算和三次赋值运算,能够把a和b的值进行互换,没有开辟多余的内存空间。c和d互换的时候,多开辟了一个内存空间存储e,但是这样只需要进行三次赋值运算就可以把c和d的值进行互换。所以第一个算法空间效率高,时间效率低,第二个算法空间效率低,时间效率高,

我们在程序当中,请求分页,请求分段,都属于用时间去换空间。在项目当中使用各种缓存技术,都属于利用空间去换时间。

JAVA空间换时间以及时间换空间的例子相关推荐

  1. 冰与火之歌:「时间」与「空间」复杂度

    算法(Algorithm)是指用来操作数据.解决程序问题的一组方法.对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,比如排序就有前面的十大经典排序和几种奇葩排序,虽然结果相同,但在过程中消 ...

  2. 正圆锥体空间方程_科学解读:什么是时间?什么是空间?理论上时空是什么?...

    时间与空间是无处不在的,但时间与空间到底是什么呢? 对于如此底层的事物,我们很难用生活中的具体概念或直观感受,去理解和描述.因为认知一个事物,往往是从底层了解其组成部分,而时间与空间显然在底层,我们的 ...

  3. 【深度学习】时间注意力模块与空间注意力模块

    注意力模块 通道(时间)注意力模块 空间注意力模块 通道(时间)注意力模块 为了汇总空间特征,作者采用了全局平均池化和最大池化两种方式来分别利用不同的信息. 输入是一个 H×W×C 的特征 F, 我们 ...

  4. RMAN使用备份按时间点传输表空间

    使用until time或者SCN来执行transport tablespace 如果在执行传输表空间操作时,对transport tablespace命令指定了目标时间,那么RMAN将在辅助实例中使 ...

  5. 【java】Java 8 - 移除Permgen 使用元空间

    1.概述 转载:Java 8 - 移除Permgen 很多开发者都在其系统中见过"java.lang.OutOfMemoryError: PermGen space"这一问题.这往 ...

  6. Java中字符串CST的时间日期转换

    在工作过程中,一些业务免不了接触到了一些对时间字符串的处理,整理如下: 转换诸如 " Wed, 17 Oct 2018 20:17:40 CST"," Wed, 17 O ...

  7. JAVA常用工具类之“时间刺客”——DateUtils

    DateUtils : 写代码时最常见的"兄弟"--时间处理工具类DateUtils 首先,我们需要先准备几样"东西": // 时区public static ...

  8. JAVA中获取当前系统时间

    JAVA中获取当前系统时间 转自:http://www.cnblogs.com/Matrix54/archive/2012/05/01/2478158.html 一. 获取当前系统时间和日期并格式化输 ...

  9. java datetime和date_Java 8时间接口localDateTime和Date的对比

    java8提供了新的时间接口.相对Date,Calendar,个人感觉最大的好处是对时间操作的学习成本很低,比Calendar低. 1. LocalDate,LocalTime,LocalDateTi ...

  10. Java获取当前的系统时间

    一. 获取当前系统时间和日期并格式化输出: import java.util.Date; import java.text.SimpleDateFormat; public class NowStri ...

最新文章

  1. usaco Arithmetic Progressions(看了题解)
  2. java遍历bean_javaweb利用javabean将数据库中内容遍历在页面输出
  3. 羊皮卷的实践-第二十一章
  4. redis 缓存过期默认时间_过期redis时间
  5. java集合的遍历_Java集合之遍历
  6. Typed DataSet的批量操作优化
  7. android.mk ndk编译选项优化,Android NDK(ARM开发)使用NEON优化 - Fla
  8. Unity BMFont自定义字体
  9. 微信小程序 自定义底部导航栏(tabBar)
  10. 中西方对时间的差异_中西方时间观差异的跨文化分析
  11. 用于爬取知乎某个话题下的精华问题中所有回答的爬虫
  12. 联通的沃phone相关新闻
  13. 淮师计算机网络题库,淮阴师范学院(淮师)计算机基础一至六章习题
  14. 但行好事 莫问前程 学习笔记 media=screen
  15. 哪里买linux虚拟主机的,怎样购买虚拟主机
  16. UE5神通--POI解决方案
  17. 虚拟机共享文件夹看不到问题
  18. 2021 46届icpc 南京
  19. 单片机 P0口、P1口 寄存器和引脚的不同
  20. Linux手动安装BBR加速器(TCP加速器)

热门文章

  1. JAVA中 万物皆对象
  2. Linux 目录权限
  3. Java设置excel单元格锁定状态
  4. excel中如何解锁锁定单元格
  5. 基于特征的真菌分解木材的理解
  6. echarts Map(地图) 波纹数据点
  7. Javo 基础 流的分类
  8. Spring Boot Configuration Annotation Processor not configured
  9. INT 10H 中断简介
  10. Android Studio 使用夜神模拟器查看apk打印日志