【数据结构】时间和空间复杂度-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,则去除与这个项 相乘的常数,得到的结果就是大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 组件时,默认情况下每次选择文件都会触发一次上传请求。如果你需要一次性上传多个文件,而不是每个文件都触发一次请求,可以通过一些配置和代码处理来实现。 方法一:通过配置file-list(…...
GEE引擎架设好之后进游戏时白屏的解决方法——gee引擎白屏修复
这两天测试GeeM2引擎的服务端,最常见的问题就是点击开始游戏出现白屏,最早还以为是服务端问题,结果是因为升级了引擎,而没有升级NewUI这份文件导致的。解决方法如下: 下载GEE引擎包最新版,(可以…...
Linux LVS 通用命令行
LVS(Linux Virtual Server)是一种基于Linux操作系统的负载均衡技术,它通过网络负载均衡技术将客户端请求分发到多台实际服务器上,以提高系统的性能和可靠性。在LVS中,常用的命令行工具主要是ipvsadm,以及一…...
laravel .env环境变量原理
介绍 对于应用程序运行的环境来说,不同的环境有不同的配置通常是很有用的。Laravel 利用 Vance Lucas 的 PHP 库 DotEnv 使得此项功能的实现变得非常简单。当应用程序收到请求时,.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,这款全球首创的轮腿式桌面AI机器人,正在悄然改变我们的办公环境。它不仅是一个高科技玩具,更是一个能大幅提升工作效率和办公室科技感的智能助手。 XGO Rider 新时代“桌宠” micr…...
matlab的resample函数
MATLAB中resample函数用法 - 知乎 (zhihu.com) 主要是经常忘记了重采样时哪个是原采样率,哪个是重采样后的采样率(目标采样率)。这里记录下,目标采样率在前面!...
idea怎么取消自动打开项目
idea设置不自动打开项目 选择File>> Settings 选择Appearance & Behavior >> System Settings 去掉勾选的Reopen last project on startup...
蓄电池在线监测系统 各大UPS铅酸蓄电池监测 保障安全
蓄电池的不断普及,确实推动了蓄电池监控和管理技术的持续升级。蓄电池检测系统的研发为我们带来了诸多好处,这些好处主要体现在以下几个方面: 一、提高蓄电池管理的智能化水平 蓄电池检测系统通过实时监测蓄电池的电压、电流、温度等关键参数…...
Python基础Day13
1.字符串 count(x)统计x出现的次数 split(m,n)以括号内的m为分隔符,将字符串分开n1个字符串 strip删除两端的空格 lstrip删除左边空格 rstrip删除右边空格 join(m)以m为分隔符,将分割开的字符串组合成一个新的字符串 max()/min&am…...
有趣的css - 跷跷板加载动画
大家好,我是 Just,这里是「设计师工作日常」,今天分享的是使用 css 模拟一个跷跷板效果的加载动画效果。 《有趣的css》系列最新实例通过公众号「设计师工作日常」发布。 目录 整体效果核心代码html 代码css 部分代码 完整代码如下html 页面…...
与机器学习的邂逅--自适应神经网络结构的深度解析
引言 随着人工智能的发展,神经网络已成为许多应用领域的重要工具。自适应神经网络(Adaptive Neural Networks,ANN)因其出色的学习能力和灵活性,逐渐成为研究的热点。本文将详细探讨自适应神经网络的基本概念、工作原理…...
用python怎么实现办公自动化【批量生成出货清单】
👨💻个人主页:开发者-曼亿点 👨💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨💻 本文由 曼亿点 原创 👨💻 收录于专栏:…...
【Qt】控件——Qt输入类控件、常见的输入类控件、输入类控件的使用、Line Edit、Text Edit、Combo Box、Spin Box
文章目录 Qt5. Qt显示类控件Line EditText EditCombo BoxSpin BoxQDateTimeEditDialSlider Qt 5. Qt显示类控件 Line Edit QLineEdit 用于表示单行输入框。可以输入一段文本,但是不能换行。 属性说明text输入框中的文本inputMask输入内容格式约束maxLength最大长度…...
单臂交换知识点
要求:pc1要与pc2 ping通 命令: LSW1命令解析: system-view: 这个命令用于进入交换机的全局配置模式。在这个模式下,用户可以配置设备的全局设置。 vlan batch 10 20: 创建VLAN 10和VLAN 20。VLAN(虚拟局域网&#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源(由于网络问题,国内用户请使用清华大学…...
PrimeTime:默认配置文件
相关阅读 PrimeTimehttps://blog.csdn.net/weixin_45791458/category_12900271.html?spm1001.2014.3001.5482 当启动PrimeTime时,它会自动执行三个设置文件中的命令,这些文件具有相同的文件名.synopsys_pt.setup,但位于不同的目录中&#x…...
JAVA-- 突破默认限制:在Java8 Parallel Stream中高效管理自定义线程池
1. 为什么需要自定义线程池管理Parallel Stream Java8引入的Parallel Stream确实让并行编程变得简单,但很多开发者在使用过程中会发现一个尴尬的事实:所有并行流操作默认共享同一个ForkJoinPool公共线程池。这就好比小区里所有住户共用一个电表ÿ…...
如何极速获取金融市场数据:5分钟实战指南
如何极速获取金融市场数据:5分钟实战指南 【免费下载链接】qstock qstock由“Python金融量化”公众号开发,试图打造成个人量化投研分析包,目前包括数据获取(data)、可视化(plot)、选股(stock)和量化回测(策…...
Mongo(2): MongoDB权限认证实战——从零配置用户角色与访问控制
1. MongoDB权限认证的必要性 第一次接触MongoDB时,很多人都会被它"开箱即用"的特性吸引——安装完成后不需要任何配置就能直接操作数据库。这种便利性在开发测试阶段确实很友好,但一旦进入生产环境,就相当于把自家大门敞开给所有人…...
Phi-3-mini-4k-instruct-gguf一文详解:从网页问答到摘要改写的全流程应用
Phi-3-mini-4k-instruct-gguf一文详解:从网页问答到摘要改写的全流程应用 1. 认识Phi-3-mini-4k-instruct-gguf Phi-3-mini-4k-instruct-gguf是微软Phi-3系列中的轻量级文本生成模型GGUF版本。这个模型特别适合处理问答、文本改写、摘要整理和简短创作等任务。想象…...
大麦智能抢票系统:告别手速极限的终极解决方案
大麦智能抢票系统:告别手速极限的终极解决方案 【免费下载链接】ticket-purchase 大麦自动抢票,支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 还在为抢不到热门演唱会门票而烦恼吗&…...
RPA+AI市场进入精细化竞争阶段,企业选型逻辑正在改变
IDC最新数据显示,中国RPAAI解决方案市场规模已达31.5亿元,竞争格局呈现“头部集中、市场分散”特征:金智维以10.1%份额位居第一,艺赛旗(9.1%)、来也科技(8.4%)紧随其后,前…...
SDMatte效果对比评测:与传统抠图工具及在线API的全面比拼
SDMatte效果对比评测:与传统抠图工具及在线API的全面比拼 1. 开篇:为什么需要新的抠图方案 在数字内容创作领域,抠图一直是个让人又爱又恨的技术活。记得去年帮朋友做电商产品图,光是给20个商品抠图就花了我整整一个周末。传统工…...
M2LOrder模型在AI编程助手场景的应用:代码注释情感分析
M2LOrder模型在AI编程助手场景的应用:代码注释情感分析 1. 引言 你有没有在代码注释里写过“这里有个天坑,后面的人小心”或者“TODO: 这个逻辑太绕了,得重构”?这些看似随手的吐槽,其实藏着开发者最真实的情绪。代码…...
HarmonyOS 音乐播放器进阶实战——AVPlayer状态管理与播放列表
1. AVPlayer状态机深度解析 在HarmonyOS音乐播放器开发中,AVPlayer的状态管理就像驾驶手动挡汽车——你需要清楚知道当前处于哪个档位,才能平稳切换。我曾在项目中因为状态处理不当导致音乐卡顿,后来才发现是状态机流转出了问题。 AVPlayer…...
