【2023】java数据结构-时间、空间复杂度分析

news2024/12/25 9:01:36

1、算法效率

算法效率分析分为两种:第一种是时间效率,第二种是空间效率。时间效率被称为时间复杂度,而空间效率被称作空间复杂度。 时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度主要衡量一个算法所需要的额外空间

2、时间复杂度:

时间复杂度的定义:在计算机科学中,算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。一个算法执行所耗费的时间

  • 大O表示法:不具体表示代码的真正的执行时间,而是表示代码执行时间随着数据规模的增长的变化趋势
  • 复杂度分享就是要捋清楚代码的执行次数和数据规模n之间的关系;

在这里插入图片描述

  1. O(1):只要代码的执行时间不随着n的增大而增大,这样的代码复杂度都是O(1)。 如:

    public void test01(int n){
    	int i = 0;
    	int sum =  0;
    	for(;1<100;i++){
    		sum = sum + i;
    	}
    }
    
  2. O(log n):变量i的值以对数的方式增长;随着i的值越来越大,i也就离n越近。如:

    public void test01(int n){
        int i=1;
        while (i<n){
            i = i * 2;
        }
    }
    

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DgYC1cAT-1690358171360)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/7e1a5fd7-8e65-469e-bea7-b3023074faca/Untitled.png)]

由以上分析可知,代码的时间复杂度表示为O(log n)

  1. O(n):T(n)与代码的执行次数成正比(代码的执行时间越长,时间复杂度越高)

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

3、空间复杂度:

空间复杂度(Space Complexity)是算法在执行过程中所需的额外空间的量度。它用于评估算法对内存资源的使用情况,包括算法使用的额外内存空间的大小和增长趋势。

  1. O(1):当空间复杂度为 O(1) 时,表示算法使用的额外空间是固定的,与输入规模无关。
    public void printNumbers(int n) {
    for (int i = 1; i <= n; i++) {
        System.out.println(i);
    }
}
  1. O(n):当空间复杂度为 O(n) 时,表示算法使用的额外空间与输入规模成正比。
public int[] copyArray(int[] nums) {
    int[] copy = new int[nums.length];
    for (int i = 0; i < nums.length; i++) {
        copy[i] = nums[i];
    }
    return copy;
}
  1. O(n^2) : 当空间复杂度为 O(n^2) 时,表示算法使用的额外空间与输入规模的平方成正比。

public int[] copyArray(int[] nums) {
    int[] copy = new int[nums.length];
    for (int i = 0; i < nums.length; i++) {
        copy[i] = nums[i];
    }
    return copy;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/792392.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于Flask+Mongodb的网络文章系统

在这个软件&#xff0c;你可以编辑文章&#xff0c;管理数据。 注册登录

使用dockerfile来配置lnmp并运行wordpress以及镜像缩小体积

docker dockerfile创建镜像1.创建工作目录2.将各项安装包放入到对应的目录中3.在centos目录中用dockerfile创建centos&#xff1a;jiang镜像用来准备依赖包4.创建依赖包镜像5.创建docker1网段6.在centos&#xff1a;jiang依赖包镜像的前提下创建lnmp各个镜像进入各个目录编辑Do…

python+monkey+ 监控 crash,性能统计

目录 前言&#xff1a; monkey 压力测试 android monkey.ini 配置文件 代码分析 前言&#xff1a; 在软件开发中&#xff0c;测试和监控是非常重要的一个环节&#xff0c;它可以帮助我们更加全面地检测软件中的安全漏洞和风险。Python 是一种常用的脚本语言&#xff0c;可以…

软考高项(五)信息系统工程 ★重点集萃★

&#x1f451; 个人主页 &#x1f451; &#xff1a;&#x1f61c;&#x1f61c;&#x1f61c;Fish_Vast&#x1f61c;&#x1f61c;&#x1f61c; &#x1f41d; 个人格言 &#x1f41d; &#xff1a;&#x1f9d0;&#x1f9d0;&#x1f9d0;说到做到&#xff0c;言出必行&am…

【Python学习笔记】:whl安装地址教程链接存档

装Sklearn包的时候遇到了莫名其妙的问题&#xff0c;最后发现是少了whl文件&#xff0c;经过多方搜索找到一些比较靠谱的教程帖子&#xff1a; whl文件下载网站&#xff1a;https://www.lfd.uci.edu/~gohlke/pythonlibs/ 无需翻墙 知乎上很全面的安装教程&#xff1a;https://z…

接口用例如何写?接口测试用例设计方法(详解)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、接口常遇见的b…

【TiDB理论知识 07】SQL执行流程

一 DML语句读写流程 1 DML语句读流程概要 用户发出SQL 被协议层接收 Protocal Layer 通过PD获取时间戳 parse模块 解析SQL&#xff0c;通过词法解析 与 语法解析 生成AST语法树 编译SQL Compile模块 ,区分点查 与 非点查&#xff0c;生成执行计划 发送给Executor,从TIKV获…

【尚硅谷】索引优化分析

目录 1. 常用指令查使用引擎的指令 sql 优化合并去重分页显示模糊查询 索引优化单表优化两表优化 1. 常用指令 常用指令&#xff1a; 查询日志&#xff1a;默认关闭&#xff0c;记录查询的sql语句&#xff08;比如慢查询&#xff0c;大于多少秒的都记录&#xff09;&#xff0…

Linux共享库库+例子

1.什么是共享库&#xff1f;有什么优点&#xff1f;和静态库有什么区别&#xff1f; Linux动态库&#xff08;Dynamic Link Library&#xff0c;缩写为DLL&#xff09;是一种在Linux系统中使用的共享库&#xff08;Shared Library&#xff09;。与静态库不同&#xff0c;动态库…

船舶推进系统故障诊断(Python代码,多通道信息融合)

1.代码运行环境要求&#xff1a;TensorFlow版本>2.4.0&#xff0c;python版本>3.6.0 船舶推进系统是船舶的重要组成部分&#xff0c;其功能是提供动力以推动船舶前进。故障可能由多种因素引起&#xff0c;以下是船舶推进系统常见的故障类型&#xff1a; 发动机故障&…

k8s部署新版elasticsearch+kibana并配置快照备份

版本:es 7.17.6 kibana 7.17.6 k8s:1.19.16 一、介绍 Elasticsearch和Kibana是一对强大的开源工具&#xff0c;通常一起使用以构建实时数据分析和可视化解决方案。 Elasticsearch: Elasticsearch是一个分布式、高性能的实时搜索和分析引擎。它构建在开源搜索引擎库Lucene之上…

Java基础阶段学习哪些知识内容?

Java是一种面向对象的编程语言&#xff0c;刚接触Java的人可能会感觉比较抽象&#xff0c;不要着急可以先从概念知识入手&#xff0c;先了解Java&#xff0c;再吃透Java&#xff0c;本节先来了解下Java的基础语法知识。 对象&#xff1a;对象是类的一个实例&#xff0c;有状态…

2023.07.26【微生物】|qiime2组间分析,ANCOM算法介绍与结果解读

目录 摘要ANCOM简介主要步骤数据聚合添加伪计数计算特征差异 结果解读火山图差异显著特征统计表差异显著特征百分位数统计表优缺点 总结 摘要 在使用qiime2进行16S/ITS分析的时候&#xff0c;少不了对样品进行组间分析。除了常见的PicRust和Lefse分析之外&#xff0c;qiime2自…

web前端tips:js继承——借用构造函数继承

上篇文章给大家分享了 js继承中的原型链继承 web前端tips&#xff1a;js继承——原型链继承 在文章末尾&#xff0c;我提到了 原型链的继承&#xff0c;子类需要传递参数给父类的构造函数&#xff0c;就无法通过直接调用父类的构造函数来实现&#xff0c;需要通过中间的过程来…

分享5款有点冷门的实用派软件

​ 分享5款冷门但值得下载的Windows软件&#xff0c;个个都是实用&#xff0c;你可能一个都没见过&#xff0c;但是 我觉得你用过之后可能就再也离不开了。 系统监控——XMeters ​ XMeters是一个系统监控软件&#xff0c;可以让你在任务栏上显示各种系统信息&#xff0c;如C…

(十九)使用InfluxDB搭建报警系统

以下内容来自 尚硅谷&#xff0c;写这一系列的文章&#xff0c;主要是为了方便后续自己的查看&#xff0c;不用带着个PDF找来找去的&#xff0c;太麻烦&#xff01; 第 19 章 使用InfluxDB搭建报警系统 19.1 什么是监控 1、监控其实每隔一段时间对数据计算一下。比如&#xf…

SAS-数据集添加序号

一、数据集添加序号 方法1&#xff1a;data步生成 方法2&#xff1a;proc sql生成 /** 方法1 **/ data class1; set sashelp.class; seq _N_; /** 添加序号 **/ run; /** 方法2 **/ proc sql;create table class2 as select monotonic() as id, * /** monotonic()添加id **…

航空发动机支架质量检测非接触式全尺寸测量CASAIM 3D扫描仪

发动机是实现飞行的强大“心脏”支撑&#xff0c;发动机支架是飞机这一精密而复杂系统中不可或缺的一部分,它将巨大而沉重的发动机牢固安装在飞机上,使其可以承受各种飞行载荷和各种未知的挑战&#xff0c;因此航空发动机支架的质量检测和尺寸测量至关重要。 使用CASAIM 3D扫描…

【java实习评审】对小说详情模块的服务封装比较到位

大家好&#xff0c;本篇文章分享一下【校招VIP】免费商业项目“推推”第一期书籍详情模块java同学的代码作品。该同学来自成都信息工程大学。本项目亮点难点&#xff1a;1 热门书籍在更新点的访问压力&#xff0c;2 书籍更新通知的及时性和有效性&#xff0c;3 书荒:同好推荐的…