算法中的复杂度(先做个铺垫)

news2024/11/17 11:36:43

文章目录

  • 定义与分类
  • 时间复杂度
    • 概念
    • 大O的渐进表示法
    • 举例
    • 情况
    • 注意
    • 内涵
  • 空间复杂度
  • 最优解

定义与分类

复杂度:衡量算法效率的标准
时间效率:衡量这个算法的运行速度,也就是我们常说的时间复杂度
空间效率:衡量这个算法所需要的额外空间,也就是我们常说的空间复杂度

时间复杂度

概念

在计算机科学中,算法的时间复杂度是一个函数,它定量的描述了该算法的运行时间。
一个算法执行所耗费的时间,从理论上说是不能算出来的,只有你把你的程序放在机器上跑起来才能知道,但是我们需要每个算法都需要上机测试吗?那样是不是很浪费时间,还很麻烦,所有才有了时间复杂度这个分析式。
一个算法所花费的时间与其中语句执行的次数成正比,算法中基本操作的执行次数,为算法的时间复杂度

大O的渐进表示法

一般我们用大O的渐进法来表示时间复杂度,并给出了一个问题的规模,这个规模我们统称为N
推导方法

  1. 用常数1取代运行时间中的所有加法函数
  2. 在修改后的运行次数函数中,只保留最高阶限
  3. 如果最高阶存在且不是1,去掉最高项的系数

得到的结果就是大O阶
简单的说时间复杂度就是一个和数据量有关,只要高阶项,不要低阶项,不要常数项的操作次数表达式

举例

1.选择排序

public void selectSort(){
    int[] arr = {1,5,9,6,3};
    for (int i = 0; i < arr.length -1; i++) {
            for (int j = i; j < arr.length -1; j++) {
                if (arr[i] >arr[j+1]){
                    int temp = arr[i];
                    arr[i] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }
}

第一次:索引从0到N-1过一遍选出最小值,循环次数为N
第二次:索引从1到N-1过一遍选出最小值,循环次数为N-1
第三次:索引从2到N-1过一遍选出最小值,循环次数为N-2
依次类推…
第N次:索引从N-1到N-1过一遍选出最小值,循环次数为1
循环次数为(N+N-1+N-2+…+1),为等差数列
我们知道等差数列最后的结果为外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
根据推导方法我们得出选择排序的时间复杂度为外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
2.插入排序
这里插入一个知识点:严格固定流程的算法,一定强调最差情况!
插入排序中,被进行排序的数组可以是有序数组,也可以是无序数组。
有序数组中,数组插入一次,进行比大小,不需要换位置,所以最后的时间复杂度为外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传;在无序数组中,可以是随机无序,最坏的情况就是一个降序数组,但是你需要一个升序的数组,数组插入一次,就要与前面交换位置,前面几个元素就要交换几次,时间复杂度为1+2+3+…+N为外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传,那最后插入排序的时间复杂度到极为多少呢?
遇到这种情况,因为插入排序的代码是固定的,所以称为固定流程的算法,我们要用最差情况来计算时间复杂度,所以插入排序的时间复杂度为外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

情况

  1. 算法流程上利用随机行为作为重要部分的,要看平均或者期望的时间复杂度,因为最差的时间复杂度无意义(生成相邻值不同的数组)
  2. 时间复杂度的均摊,(动态数组,N个数的时间复杂度为外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传,那么一个数的时间复杂度为外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传)

注意

  1. 不要用代码结构来判断时间复杂度,比如只有一个while循环的冒泡排序,时间复杂度为外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
  2. 不要用代码结构来判断时间复杂度,比如N/1+N/2+…+N/N,这个流程的时间复杂度为外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传调和级数
  3. 时间复杂度只能是对算法流程充分理解才能分析出来的,而不是简单的看代码结构!
  4. 时间复杂度很重要,可以直接判断某个方法能不能通过一个题目,根据数据量猜解法

内涵

描述算法运行时间和数据量的关系,而且当数据量很大很大时,关系相当的本质,排除了常熟时间的干扰

空间复杂度

实现该算法所需的额外空间

最优解

先满足时间复杂度最优,然后尽量少用空间的解

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

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

相关文章

Unsupervised Learning ~ Anomaly detection

unusual events vibration: 振动 Density estimation: Gaussian(normal) Distribution. standard deviation: 标准差 variance deviation sigma Mu Parameter estimation Anomaly detection algorithm 少量异常样本点的处理经验 algorithm evaluation skewed datatsets:…

【 信息技术教资面试备战】

信息技术教资面试 教育事业&#xff0c;是一项终身事业&#xff0c;是从胎教开始到临终教育的一个循序渐进的过程。为此&#xff0c;教育艺术应当是人类生存之光。 一、什么是信息技术教资面试 考什么&#xff1a; 信息技术教资面试主要考察的内容包括结构化面试、试讲和答辩。…

字符串常量池(StringTable)

目录 String的基本特性 String的内存分配 字符串拼接操作 intern()的使用 String的基本特性 String&#xff1a;字符串&#xff0c;使用一对""引起来表示 String声明为final的&#xff0c;不可被继承 String实现了Serializable接口&#xff1a;表示字符串是支持…

数据库:SQL分类之DQL详解

1.DQL语法 select 字段列表 from 表名列表 where 条件列表 group by 分组字段列表 having 分组后条件列表 order by 排序字段列表 limit 分页参数 基本查询 条件查询&#xff08;where&#xff09; 聚合函数&#xff08;count、max、min、avg、sum &#xff09; 分组查询&…

jenkins+docker集成harbor实现可持续集成

目录 一、前言 二、Harbor介绍 2.1 什么是Harbor 2.1.1 Harbor架构图 2.2 Harbor 特征 2.3 Harbor 核心组件 2.4 Harbor使用场景 三、Harbor部署 3.1 安装docker compose 3.1.1 安装方式一 3.2 基于python3 pip安装docker compose 3.2.1 安装python3 3.2.2 安装pyt…

Kafka 架构深入探索

目录 一、Kafka 工作流程及文件存储机制 二、数据可靠性保证 三 、数据一致性问题 3.1follower 故障 3.2leader 故障 四、ack 应答机制 五、部署FilebeatKafkaELK 5.1环境准备 5.2部署ELK 5.2.1部署 Elasticsearch 软件 5.2.1.1修改elasticsearch主配置文件 5.2…

Collection与数据结构 二叉树(三):二叉树精选OJ例题(下)

1.二叉树的分层遍历 OJ链接 上面这道题是分层式的层序遍历,每一层有哪些结点都很明确,我们先想一想普通的层序遍历怎么做 /*** 层序遍历* param root*/public void levelOrder1(Node root){Queue<Node> queue new LinkedList<>();queue.offer(root);while (!qu…

2024第十五届蓝桥杯 JAVA B组 填空题

没参加这次蓝桥杯算法赛&#xff0c;十四届蓝桥杯被狂虐&#xff0c;对算法又爱又恨&#xff0c;爱我会做的题&#xff0c;痛恨我连题都读不懂的题&#x1f62d;,十四届填空只做对一个&#xff0c;今天闲的蛋疼想看看这次比赛能做对几个。 暂时没找到题目&#xff0c;这是网上找…

【Linux】阿里云ECS搭建lnmp和lamp集群

搭建LNMP&#xff08;Linux Nginx MySQL PHP&#xff09;或LAMP&#xff08;Linux Apache MySQL PHP&#xff09;集群 创建ECS实例&#xff1a; 在阿里云控制台创建多个ECS实例&#xff0c;选择相应的操作系统和配置&#xff0c;确保这些实例在同一VPC网络内&#xff0c;…

探索ERC20代币:构建您的第一个去中心化应用

下面文章中会涉及到该资源中的代码&#xff0c;如果想要完整版代码可以私信我获取&#x1f339; 文章目录 概要整体架构流程技术名词解释ERC20智能合约web3.js 技术细节ERC20合约部署创建前端界面前端与智能合约互连运行DAPP 小结 概要 在加密货币世界中&#xff0c;ERC20代币…

<计算机网络自顶向下> P2P应用

纯P2P架构 没有或者极少一直运行的Server&#xff0c;Peer节点间歇上网&#xff0c;每次IP地址都可能变化任意端系统都可以直接通信利用peer的服务能力&#xff0c;可扩展性好例子&#xff1a;文件分发; 流媒体; VoIP类别:两个节点相互上载下载文件&#xff0c;互通有无&#…

【opencv】示例-text_skewness_correction.cpp 校正文本图像的倾斜度

// 此教程展示了如何矫正文本的偏斜。 // 程序接受一个偏斜的源图像作为输入&#xff0c;并显示非偏斜的文本。#include <opencv2/core.hpp> // 包含OpenCV核心功能的头文件 #include <opencv2/imgcodecs.hpp> // 包含OpenCV图像编解码功能的头文件 #include <o…

大模型实战案例:8卡环境微调马斯克开源大模型 Grok-1

节前&#xff0c;我们星球组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、参加社招和校招面试的同学&#xff0c;针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 汇总…

文献阅读:Viv:在 web 上多尺度可视化高分辨率多重生物成像数据

文献介绍 「文献题目」 Viv: multiscale visualization of high-resolution multiplexed bioimaging data on the web 「研究团队」 Nils Gehlenborg&#xff08;美国哈佛医学院&#xff09; 「发表时间」 2022-05-11 「发表期刊」 Nature Methods 「影响因子」 47.9 「DOI…

java设计模式之策略模式实操

一、背景 临床服务项目流向规则匹配&#xff0c;比如说医生开一个“CT”检查&#xff0c;该检查应该由哪个科室来执行&#xff0c;是通过流向规则配置来决定的&#xff0c;具体配置如下图&#xff1a; 通过相关的条件匹配&#xff0c;最终找到流向科室。 二、设计思路 有几个注…

云计算:Linux 部署 OVN 集群

目录 一、实验 1.环境 2.Linux 部署 OVN 集群&#xff08;中心端&#xff09; 3.Linux 部署 OVN 集群&#xff08;业务端1&#xff09; 4.Linux 部署 OVN 集群&#xff08;业务端2&#xff09; 4.OVN 中心端 连接数据库 5.OVN 业务端1 加⼊控制器 6.OVN 业务端2 加⼊控…

AI克隆语音(基于GPT-SoVITS)

概述 使用GPT-SoVITS训练声音模型&#xff0c;实现文本转语音功能。可以模拟出语气&#xff0c;语速。如果数据质量足够高&#xff0c;可以达到非常相似的结果。相比于So-VITS-SVC需要的显卡配置更低&#xff0c;数据集更小&#xff08;我的笔记本NVIDIA GeForce RTX 4050 Lap…

基于LSTM的新闻中文文本分类——基于textCNN与textRNN

构建词语字典 def build_vocab(file_path, tokenizer, max_size, min_freq):# 定义词汇表字典&#xff1a;使用 vocab_dic {} 初始化一个空字典&#xff0c;用于存储每个词及其出现频率vocab_dic {}with open(file_path, r, encodingUTF-8) as f:for line in tqdm(f):lin l…

为什么光伏探勘测绘需要无人机?

随着全球对可再生能源需求的不断增长&#xff0c;光伏产业也迎来了快速发展的机遇。光伏电站作为太阳能发电的主要形式之一&#xff0c;其建设前期的探勘测绘工作至关重要。在这一过程中&#xff0c;无人机技术的应用正逐渐展现出其独特的优势。那么&#xff0c;为什么光伏探勘…

《手机维修600G资料》云盘下载地址

无意中发现一个生财之道&#xff0c;哈哈哈&#xff0c;就是发现有人在一些视频平台&#xff0c;发手机维修之类的视频吸引客户。这样自己就不用开店也可以接生意了。问题剩下就一个了&#xff0c;把手机维修技术学好&#xff0c;一技在手&#xff0c;天上我有。 《手机维修600…