当前位置: 首页 > news >正文

【数据结构】时间和空间复杂度-Java

如何衡量算法的好坏

根据时间复杂度和空间复杂度来判断 

比较项目时间复杂度空间复杂度
定义衡量算法执行时间与问题规模之间的关系衡量算法在运行过程中所占用的额外存储空间与问题规模之间的关系
表达方式通常用大O符号表示,如O(n)、O(n^2)等通常用大O符号表示,如O(n)、O(1)等
关注重点算法执行时间的增长速度算法所需额外空间的增长速度
影响因素算法中基本操作的执行次数算法所需的额外数据结构占用的空间大小
举例顺序查找的时间复杂度为 O (n),随着数据规模 n 的增大,查找时间线性增长使用一个固定大小的变量,空间复杂度为 O (1);使用一个长度为 n 的数组,空间复杂度为 O (n)

大O的渐进表示法

【实例1】

推导大O阶方法

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

使用大O的渐进表示法后,Func1的时间复杂度为O(N^2)

我们平时所说的时间复杂度和空间复杂度都是在在最坏情况下的时间复杂度

拓展:怎么计算平均时间复杂度

算平均时间复杂度就是把每种情况出现的概率乘以在这种情况下算法花的时间,然后把所有这些结果加起来。

平均时间复杂度计算公式:

常见时间复杂度计算举例

【实例1】知到循环次数的时间复杂度

【实例2】不知循环次数的时间复杂度

【实例3】常数次执行的时间复杂度

【实例4】冒泡排序的时间复杂度

小tips:求复杂度一定要结合算法思想!并不一定两个 for循环嵌套,时间复杂度O(N)=N^2

【实例5】二分查找的时间复杂度

【实例6】阶乘递归的时间复杂度

【实例7】斐波那契的时间复杂度

空间复杂度

空间复杂度是对一个算法在运行过程中临时占用存储空间大小的度量,空间复杂度算的是变量的个数,使用大O渐进表示法。

通俗来讲,空间复杂度就是看这个算法在运行过程中额外占用了多少内存空间。

【实例1】冒泡排序的空间复杂度

相关文章:

【数据结构】时间和空间复杂度-Java

如何衡量算法的好坏 根据时间复杂度和空间复杂度来判断 比较项目时间复杂度空间复杂度定义衡量算法执行时间与问题规模之间的关系衡量算法在运行过程中所占用的额外存储空间与问题规模之间的关系表达方式通常用大O符号表示,如O(n)、O(n^2&am…...

tensorRT安装详解(linux与windows)

目录 tensorRT介绍 前置准备 安装cuda与cudnn linux windows cuda版本查看 下载安装包 linux安装 安装 安装验证 windows安装 安装 环境变量配置 安装验证 tensorRT介绍 有关tensorRT的介绍见 TensorRT简介-CSDN博客 前置准备 安装cuda与cudnn linux Linux下…...

MYSQL OPTIMIZE TABLE 命令重建表和索引

在 MySQL 中,OPTIMIZE TABLE 命令用于重建表和相关索引,以及回收未使用的空间。这个命令对于维护和优化数据库表的性能非常有用,特别是在进行了大量的数据删除操作之后。OPTIMIZE TABLE 可以减少数据文件的碎片化,确保数据存储更加…...

开发指南075-各种动画效果

方法一、使用动画GIF图标 方法二、使用vue-count-to import CountTo from vue-count-to components: { CountTo }, <count-to :start-val"0" :end-val"num" :duration"num>0?num:1" class"card-panel-num" /> 方法…...

使用 el-upload 如何做到发送一次请求上传多个文件

在使用 Element UI 的 el-upload 组件时&#xff0c;默认情况下每次选择文件都会触发一次上传请求。如果你需要一次性上传多个文件&#xff0c;而不是每个文件都触发一次请求&#xff0c;可以通过一些配置和代码处理来实现。 方法一&#xff1a;通过配置file-list&#xff08;…...

GEE引擎架设好之后进游戏时白屏的解决方法——gee引擎白屏修复

这两天测试GeeM2引擎的服务端&#xff0c;最常见的问题就是点击开始游戏出现白屏&#xff0c;最早还以为是服务端问题&#xff0c;结果是因为升级了引擎&#xff0c;而没有升级NewUI这份文件导致的。解决方法如下&#xff1a; 下载GEE引擎包最新版&#xff0c;&#xff08;可以…...

Linux LVS 通用命令行

LVS&#xff08;Linux Virtual Server&#xff09;是一种基于Linux操作系统的负载均衡技术&#xff0c;它通过网络负载均衡技术将客户端请求分发到多台实际服务器上&#xff0c;以提高系统的性能和可靠性。在LVS中&#xff0c;常用的命令行工具主要是ipvsadm&#xff0c;以及一…...

laravel .env环境变量原理

介绍 对于应用程序运行的环境来说&#xff0c;不同的环境有不同的配置通常是很有用的。Laravel 利用 Vance Lucas 的 PHP 库 DotEnv 使得此项功能的实现变得非常简单。当应用程序收到请求时&#xff0c;.env 文件中列出的所有变量将被加载到 PHP 的超级全局变量 $_ENV 中。 使…...

Nuxt.js 应用中的 app:templatesGenerated 事件钩子详解

title: Nuxt.js 应用中的 app:templatesGenerated 事件钩子详解 date: 2024/10/19 updated: 2024/10/19 author: cmdragon excerpt: app:templatesGenerated 是 Nuxt.js 的一个生命周期钩子,在模板编译到虚拟文件系统(Virtual File System, VFS)之后被调用。这个钩子允许…...

新时代AI桌宠:XGO Rider让你的办公室瞬间高大上

​ XGO Rider Luwu 智能打造了桌面双轮足式机器人 XGO Rider&#xff0c;这款全球首创的轮腿式桌面AI机器人&#xff0c;正在悄然改变我们的办公环境。它不仅是一个高科技玩具&#xff0c;更是一个能大幅提升工作效率和办公室科技感的智能助手。 XGO Rider 新时代“桌宠” micr…...

matlab的resample函数

MATLAB中resample函数用法 - 知乎 (zhihu.com) 主要是经常忘记了重采样时哪个是原采样率&#xff0c;哪个是重采样后的采样率&#xff08;目标采样率&#xff09;。这里记录下&#xff0c;目标采样率在前面&#xff01;...

idea怎么取消自动打开项目

idea设置不自动打开项目 选择File>> Settings 选择Appearance & Behavior >> System Settings 去掉勾选的Reopen last project on startup...

蓄电池在线监测系统 各大UPS铅酸蓄电池监测 保障安全

蓄电池的不断普及&#xff0c;确实推动了蓄电池监控和管理技术的持续升级。蓄电池检测系统的研发为我们带来了诸多好处&#xff0c;这些好处主要体现在以下几个方面&#xff1a; 一、提高蓄电池管理的智能化水平 蓄电池检测系统通过实时监测蓄电池的电压、电流、温度等关键参数…...

Python基础Day13

1.字符串 count(x)统计x出现的次数 split(m,n)以括号内的m为分隔符&#xff0c;将字符串分开n1个字符串 strip删除两端的空格 lstrip删除左边空格 rstrip删除右边空格 join(m)以m为分隔符&#xff0c;将分割开的字符串组合成一个新的字符串 max&#xff08;&#xff09;/min&am…...

有趣的css - 跷跷板加载动画

大家好&#xff0c;我是 Just&#xff0c;这里是「设计师工作日常」&#xff0c;今天分享的是使用 css 模拟一个跷跷板效果的加载动画效果。 《有趣的css》系列最新实例通过公众号「设计师工作日常」发布。 目录 整体效果核心代码html 代码css 部分代码 完整代码如下html 页面…...

与机器学习的邂逅--自适应神经网络结构的深度解析

引言 随着人工智能的发展&#xff0c;神经网络已成为许多应用领域的重要工具。自适应神经网络&#xff08;Adaptive Neural Networks&#xff0c;ANN&#xff09;因其出色的学习能力和灵活性&#xff0c;逐渐成为研究的热点。本文将详细探讨自适应神经网络的基本概念、工作原理…...

用python怎么实现办公自动化【批量生成出货清单】

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…...

【Qt】控件——Qt输入类控件、常见的输入类控件、输入类控件的使用、Line Edit、Text Edit、Combo Box、Spin Box

文章目录 Qt5. Qt显示类控件Line EditText EditCombo BoxSpin BoxQDateTimeEditDialSlider Qt 5. Qt显示类控件 Line Edit QLineEdit 用于表示单行输入框。可以输入一段文本&#xff0c;但是不能换行。 属性说明text输入框中的文本inputMask输入内容格式约束maxLength最大长度…...

单臂交换知识点

要求&#xff1a;pc1要与pc2 ping通 命令&#xff1a; LSW1命令解析&#xff1a; system-view: 这个命令用于进入交换机的全局配置模式。在这个模式下&#xff0c;用户可以配置设备的全局设置。 vlan batch 10 20: 创建VLAN 10和VLAN 20。VLAN&#xff08;虚拟局域网&#x…...

CentOS7 上安装GitLab的经历

一、安装必要的基础环境 1.安装依赖包 [rootgitlab-server ~]#yum install curl policycoreutils openssh-server openssh-clients postfix wget git patch -y [rootgitlab-server ~]# systemctl start postfix 2.配置yum源(由于网络问题&#xff0c;国内用户请使用清华大学…...

Matlab | matlab常用命令总结

常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档&#xff1a;https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java&#xff08;供 Kotlin 使用&#xff09; 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join

纯 Java 项目&#xff08;非 SpringBoot&#xff09;集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...

深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏

一、引言 在深度学习中&#xff0c;我们训练出的神经网络往往非常庞大&#xff08;比如像 ResNet、YOLOv8、Vision Transformer&#xff09;&#xff0c;虽然精度很高&#xff0c;但“太重”了&#xff0c;运行起来很慢&#xff0c;占用内存大&#xff0c;不适合部署到手机、摄…...

LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用

中达瑞和自2005年成立以来&#xff0c;一直在光谱成像领域深度钻研和发展&#xff0c;始终致力于研发高性能、高可靠性的光谱成像相机&#xff0c;为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...

基于开源AI智能名片链动2 + 1模式S2B2C商城小程序的沉浸式体验营销研究

摘要&#xff1a;在消费市场竞争日益激烈的当下&#xff0c;传统体验营销方式存在诸多局限。本文聚焦开源AI智能名片链动2 1模式S2B2C商城小程序&#xff0c;探讨其在沉浸式体验营销中的应用。通过对比传统品鉴、工厂参观等初级体验方式&#xff0c;分析沉浸式体验的优势与价值…...

表单设计器拖拽对象时添加属性

背景&#xff1a;因为项目需要。自写设计器。遇到的坑在此记录 使用的拖拽组件时vuedraggable。下面放上局部示例截图。 坑1。draggable标签在拖拽时可以获取到被拖拽的对象属性定义 要使用 :clone, 而不是clone。我想应该是因为draggable标签比较特。另外在使用**:clone时要将…...

Copilot for Xcode (iOS的 AI辅助编程)

Copilot for Xcode 简介Copilot下载与安装 体验环境要求下载最新的安装包安装登录系统权限设置 AI辅助编程生成注释代码补全简单需求代码生成辅助编程行间代码生成注释联想 代码生成 总结 简介 尝试使用了Copilot&#xff0c;它能根据上下文补全代码&#xff0c;快速生成常用…...

Vue 实例的数据对象详解

Vue 实例的数据对象详解 在 Vue 中,数据对象是响应式系统的核心,也是组件状态的载体。理解数据对象的原理和使用方式是成为 Vue 专家的关键一步。我将从多个维度深入剖析 Vue 实例的数据对象。 一、数据对象的定义方式 1. Options API 中的定义 在 Options API 中,使用 …...

自定义线程池1.2

自定义线程池 1.2 1. 简介 上次我们实现了 1.1 版本&#xff0c;将线程池中的线程数量交给使用者决定&#xff0c;并且将线程的创建延迟到任务提交的时候&#xff0c;在本文中我们将对这个版本进行如下的优化&#xff1a; 在新建线程时交给线程一个任务。让线程在某种情况下…...