【数据结构趣味多】时间复杂度和空间复杂度

news/2024/10/17 23:23:48/

算法效率分析分为两种:第一种是时间效率,第二种是空间效率。时间效率被称为时间复杂度,而空间效率被称作空间复杂度。 时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度主要衡量一个算法所需要的额外空间, 在计算机发展的早期,计算机的存储容量很小。所以对空间复杂度很是在乎。但是经过计算机行业的迅速发展,计算机的存储容量已经达到了很高的程度。所以我们如今已经不需要再特别关注一个算法的空间复杂度。

1.时间复杂度 

1.1概念       

 时间复杂度的定义:在计算机科学中,算法的时间复杂度是一个数学函数,它定量描述了该算法的运行时间。一个算法执行所耗费的时间,从理论上说,是不能算出来的,只有你把你的程序放在机器上跑起来,才能知道。一个算法所花费的时间与其中语句的执行次数成正比例,算法中的基本操作的执行次数,为算法的时间复杂度。 

 1.2大O渐近法

        对于程序的运行,我们不能每个都精确的确定程序需要的时间,因此我们使用大O渐近法来描述程序所需的时间 。

大O渐近法的注意事项 

  1. 用常数1取代运行时间中的所有加法常数。
  2. 在修改后的运行次数函数中,只保留最高阶项。
  3. 如果最高阶项存在且不是1,则去除与这个项目相乘的常数。得到的结果就是大O阶。 

 例子:

    // 请计算一下func1基本操作执行了多少次?void func1(int N){int count = 0;for (int i = 0; i < N ; i++) {for (int j = 0; j < N ; j++) {count++;}}for (int k = 0; k < 2 * N ; k++) {count++;}int M = 10;while ((M--) > 0) {count++;}System.out.println(count);}

F(N)=N^2+2*N+10

由上方说说的注意事项可知:该程序时间复杂度为O(N^2).

2.空间复杂度 

概念:空间复杂度是对一个算法在运行过程中临时占用存储空间大小的量度 。空间复杂度不是程序占用了多少bytes的空 间,因为这个也没太大意义,所以空间复杂度算的是变量的个数。空间复杂度计算规则基本跟时间复杂度类似,也使用大O渐进表示法。

 

 


http://www.ppmy.cn/news/782.html

相关文章

React基础

文章目录1.简介1.1 react与vue1.1.1 相同点1.1.2 不同点1.1.3 函数式组件的特点&#xff08;什么是函数式组件&#xff09;a.幂等b.无副作用用&#xff1a;1.1.4 虚拟dom的作用1.1.5 vue当中template与render的关系&#xff1a;1.2 MVC、MVVM、MVP模式1.2.1 MVC1.2.2 MVVM1.2.3…

MySQL介绍与安装(超详细)

数据库介绍 数据库(database)简称DB&#xff0c;实际上就是一个文件集合&#xff0c;是一个存储数据的仓库&#xff0c;本质就是一个文件系统&#xff0c;数据库是按照特定的格式把数据存储起来&#xff0c;用户可以对存储的数据进行增删改查等操作。 数据库存储数据特点 ●…

Java处理数据成为树状结构

如题所示&#xff0c;项目中需要将部分数据处理成为树状结构&#xff0c;实现过程如下&#xff1a; 注&#xff1a;也可以使用sql达到该目的&#xff0c;但此处数据不多&#xff0c;故在代码中处理&#xff0c;主要是sql处理不是很会 // 获取需要封装的数据List<Data> d…

java(面向对象)的23种设计模式(11)——观察者模式

一、定义 观察者模式&#xff1a;指多个对象间存在一对多的依赖关系&#xff0c;当一个对象的状态发生改变时&#xff0c;所有依赖于它的对象都得到通知并被自动更新。 换种说法&#xff0c;定义两种对象&#xff0c;观察者和目标对象&#xff0c;多个观察者同时监听一个目标对…

pikachu平台SQL注入

pikachu平台SQL注入 日常心累、速通pikachu注入相关 目录pikachu平台SQL注入使用到的名词解释1. 数字型注入 --使用bp处理数据包2. 字符型注入 --hackbar处理3. 搜索型注入4. xx型注入5. insert/update注入6. delete注入7. http头注入8. 布尔盲注9. 时间盲注10. 宽字节注入使用…

Shell基础语法——命令

内建命令&#xff08;内置命令&#xff09; 所谓 Shell 内建命令&#xff0c;就是由 Bash 自身提供的命令&#xff0c;而不是文件系统中的某个可执行文件。可以使用 type 来确定一个命令是否是内建命令。 通常来说&#xff0c;内建命令会比外部命令执行得更快&#xff0c;执行…

【云原生之Docker实战】使用docker部署Homebox内网测速工具

【云原生之Docker实战】使用docker部署Homebox内网测速工具 一、Homebox介绍1.Homebox简介2.Homebox特点二、检查本地系统环境1.检查系统版本2.检查系统内核版本三、检查docker环境1.检查docker版本2.检查docker状态四、下载Homebox镜像五、安装docker-compose工具1.下载docker…

qt程序的CMakeLists.txt配置转为平台的qt的.pro项目工程文件

参考这个 跨平台qt程序的CMakeLists.txt配置转为平台的qt的.pro项目工程文件_谁能懂我2011的博客-CSDN博客 一些比较正规的跨平台qt项目没有.pro项目文件只有CMakeLists.txt文件&#xff0c;如果要编译调试的话得转为qt项目&#xff0c; 首先打开qt安装目录里面的qmake工具&a…