算法时间复杂度的衡量

算法系列---衡量的标准之时间复杂度 聊一聊时间复杂度那些事。 阅读详情

   算法复杂度分为时间复杂度和空间复杂度,一个好的算法应该具体执行时间短,所需空间少的特点。

     随着计算机硬件和软件的提升,一个算法的执行时间是算不太精确的。只能依据统计方法对算法进行估算。我们抛开硬件和软件的因素,算法的好坏直接影响程序的运行时间。
     我们看一下小例子:
     int value = 0;                         // 执行了1次
     for (int i = 0; i < n; i++) {       // 执行了n次
          value += i;
     }
     这个算法执行了 1 + n 次,如果n无限大,我们可以把前边的1忽略,也就是说这个算法执行了n次
     时间复杂度常用大O符号表示,这个算法的时间复杂度就是O(n).
     概念: 一般情况下,算法的基本操作重复执行的次数是模块n的某一函数f(n),因此,算法的时间复杂度记做 T(n) = O(f(n))。 随着模块n的增大,算法执行的时间增长率f(n)的增长率成正比,所以f(n)越小,算法 的时间复杂度越低,算法的效率越高。
     计算时间复杂度
     1.去掉运行时间中的所有加法常数。
     2.只保留最高阶项。
     3.如果最高阶项存在且不是1,去掉与这个最高阶相乘的常数得到时间复杂度
 
我们看一个例子
     for (int i = 0; i < n; i++) {
          for (int j = i; j < n; j++) {
               // do .....
          }
     }
当 i = 0 时 里面的fo循环执行了n次,当i等待1时里面的for循环执行了n -  1次,当i 等于2里里面的fro执行了n - 2次........所以执行的次数是
根据我们上边的时间复杂度算法
     1.去掉运行时间中的所有加法常数: 没有加法常数不用考虑
     2.只保留最高阶项: 只保留 
     3. 去掉与这个最高阶相乘的常数:  去掉  只剩下 
     最终这个算法的时间复杂度为
 
再看一个线性的
      for ( int i = 0; i < n; i++) {
          // do .....
     }
     因为循环要执行n次所以时间复杂度为O(n)
 
其它的我也就不一个一个算了,下面给出了常用的时间复杂度
 

排序法

最差时间分析 平均时间复杂度 稳定度 空间复杂度
冒泡排序 O(n2) O(n2) 稳定 O(1)
快速排序 O(n2) O(n*log2n) 不稳定 O(log2n)~O(n)
选择排序 O(n2) O(n2) 稳定 O(1)
二叉树排序 O(n2) O(n*log2n) 不一顶 O(n)

插入排序

O(n2) O(n2) 稳定 O(1)
堆排序 O(n*log2n) O(n*log2n) 不稳定 O(1)
希尔排序 O O 不稳定 O(1)



转自:http://www.cnblogs.com/li-peng/p/4022648.html
     
新华DCS系统仿真测试方法详细介绍 新华DCS ICAN3.1系统是应用广泛并且功能非常强大的国产DCS系统。具有管理虚拟CPU并仿真运行的功能。并且上位机画面可以与虚拟DPU数据实时同步仿真。具体仿真方法如下所示: 1、 需要设备及软件: 2、步骤如下: 2.1硬件步骤: 1)电脑开机。 2)交换机连接电脑网卡。 3)交换机上电运行。 2.2软件步骤: 1)设置电脑IP 一般配置IP为A网工程站IP。 222.222.221.201/255.255.255.0 2)建立虚拟DPU 登录 D:\iCAN\Program\Vxcu 文件夹。 阅读详情

相关推荐

领域驱动设计整理——实体和值对象设计

实体引言在领域驱动设计里,实体的设计可以说是通用语言的核心,也是最开始在模型划分中需要考虑的。怎么样设计实体和怎么样划分限界上下文同样重要。实体的概念就是要保证通用语言的完整性。领域驱动让设计实体的关注点从数据的属性和表的关联转化到了富有行为的领域概念上。 实体是具有可变性的,这是一个和值对象比较明显的区分,也即实体是可以持续得变化,持续得修改,并且具有唯一的标识。在设计实体的时候需要跳出CRUD的

马猴烧酒└(┐卍^o^)卍ドゥルルル~楪詩月「YUZURIHA SHIZUKI」 2万+

算法——排序算法

排序算法 1 排序算法的介绍 排序也称排序算法(Sort Algorithm),排序是将一组数据,依指定的顺序进行排列的过程。 2 排序的分类: 内部排序: 指将需要处理的所有数据都加载到内部存储器(内存)中进行排序。 外部排序法: 数据量过大,无法全部加载到内存中,需要借助外部存储(文件等)进行排序。 3) 常见的排序算法分类(见右图) 时间频度 度量一个程序(算法)执行时间的两种方法: 事后统计的方法 这种方法可行, 但是有两个问题:一是要想对设计的算法的运行性能进行评测,需要实际运行该程序

qq_46127735的博客 571

Abaqus仿真进阶:如何准确计算气动软体机器人的抓取力(Blocking Force分析)

本文详细介绍了使用Abaqus进行气动软体机器人抓取力(Blocking Force)分析的进阶技巧。从材料模型验证、刚性目标物选择到接触对建立和充气加载优化,提供了一套完整的有限元仿真解决方案,帮助工程师准确预测软体执行器的抓取性能。

weixin_42528902的博客 403

算法的时间复杂度

算法的时间复杂度定义为: 时间复杂度或称时间复杂性,又称计算复杂度,她说是算法有效的度量之一,时间复杂度是一个算法运行时间的相对度量,一个算法的运行时间长短,它大致等于执行一种简单操作所(赋值、比较、计算、转向、返回、输入和输出)需要的时间与算法中进行简单操作次数的乘积。 根据定义,求解算法的时间复杂度的具体步骤是: ⑴找出算法中的基本语句;   一般算法中执行次数最多的那条语句就是基...

努力,奋斗! 7725

WebRTC音频传输实战:从采集到播放的完整链路解析(附RTP包处理细节)

本文深入解析了WebRTC音频传输的完整链路,从麦克风采集、音频处理与编码,到RTP打包、网络发送,再到接收端的NetEQ抗抖动处理与最终播放。文章以Linux PulseAudio为例,详细剖析了线程模型、缓冲区管理及RTP包处理等关键细节,旨在帮助开发者优化实时音频应用的延迟、卡顿与回声问题。

tea88的博客 853

揭秘Coze图生图隐藏玩法:用Excel批量生成100+电商主图(扣子插件进阶教程)

本文深入解析了如何利用Coze(扣子)的图像生成插件实现电商主图的批量自动化生产。通过将Excel数据源、参数化提示词模板与参考图风格相结合,构建了一套高效的企业级解决方案,能够快速为海量SKU生成风格统一的高质量图片,大幅提升电商运营效率。

theta的博客 435

算法效率的衡量方法和准则——时间复杂度、空间复杂度

衡量算法效率的方法通常有两种: 1.事后统计法 衡量算法效率最简单的一个办法就是把算法变成一个程序,然后再机器上执行,然后计时,这就是事后统计法。 这样显然有一些缺点: 1.必须到机器上去计算,而且这个计算不只是一次,我们要用多组数据对其进行重复的运算,然后得到一个统计的结果,那么你要算上机器的时间。 2.肯定会有一些其他因素掩盖算法的本质。 2.事前分析估算法 通常比较算法好坏,都是在设计算法的...

Mr____Cheng的博客 1万+

基于经验模态分解和核主成分分析结合长短期记忆网络EMD-KPCA-LSTM的光伏功率预测算法--Matlab

基于经验模态分解和核主成分分析结合长短期记忆网络EMD-KPCA-LSTM的光伏功率预测算法--Matlab

前程算法屋的博客 629

算法复杂度的计算方法

简单的说就是语句的执行次数 规则: 1.用常数1来取代运行时间中所有加法常数。 加法的复杂度就为O(1) 2.修改后的运行次数函数中,只保留最高阶项 3.如果最高阶项存在且不是1,则去除与这个项相乘的常数。 int sum = 0,n = 100; //执行一次 sum = (1+n)*n/2; //执行一次 System.out.println (sum); //执行一次 ...

weixin_41012399的博客 9358

HFSS实战项目——GPS北斗双模微带天线

本文设计了一款方形圆极化微带天线应用于北斗B1和GPSL1频段,满足高增益、低VSWR、适当方向图等要求。设计中心频率为1568MHz,介质板采用厚度h=1.6mm的Arlon AD450(tm)板,相对介电常数为4.5,采用探针馈电。

2401_87464239的博客 1769

勇闯dify v1.0.0之设置模型供应商。解决:Reached maximum retries (3) for URL https://marketplace.dify.ai/

朋友们,大家好,今天带大家来勇闯dify v1.0.0。为什么叫勇闯呢?我就这么说吧,本来我昨天就想带大家勇闯v1.0.0的。但是dify的marketplace访问不了。公司的网和手机热点都试了,就是访问不了。我们连个模型都没有,还勇闯个球啊,对吧,就搁置了。今天,我赶紧看看这个marketplace好了没。一看,可以了。赶紧写下这篇博客,帮助同志们走出困境。

xiezhipu的博客 4617

如何判断算法的复杂度?复杂度判断都有几个方面?

算法复杂度是用来衡量算法执行效率的一种方式,它通常包括时间复杂度和空间复杂度两个方面。判断算法复杂度是理解算法性能的关键步骤。以下是如何判断算法复杂度的方法以及需要考虑的几个方面。

赵KK的博客 1303

52、切换线性动态系统:原理、挑战与高斯和滤波解决方案

本文介绍了切换线性动态系统(SLDS)的基本原理及其在复杂时间序列建模中的应用。SLDS结合了隐马尔可夫模型的离散状态切换与线性动态系统的连续状态演化,适用于系统动态发生跳跃的场景,如化工过程监测和金融市场分析。由于精确推理在计算上不可行,文章重点阐述了高斯和滤波这一近似方法,通过有限高斯混合来逼近后验分布,并详细描述了其递归更新、权重计算与组件合并流程。同时讨论了性能评估、优化策略及常见问题的解决方案,并展望了SLDS与深度学习、在线学习和多模态融合的未来发展方向。

algae的博客 161

时间复杂度--算法的时间效率衡量标准

以上就是时间复杂度的概念,希望读者能仔细体会,好好阅读。​。

jayus_9的博客 2127

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

深入理解算法的时间效率衡量标准--时间复杂度

很多同学在程序开发和算法调优的过程中,经常会接触到时间复杂度的概念,那究竟什么是时间复杂度呢?在回答这个问题之前,我们先举一个例子,我们把编写一个程序的过程类比成指挥一场战役,程序开发人员就扮演着指挥者的角色,编写的代码就是被指挥的战士,那么算法就是指挥战役的"兵法",因此对程序开发人员来说,算法的重要性不言而喻。在实际开发过程中,为了满足业务需求,实现业务目的的各种方法和思路就是算法,而时间复杂度是衡量算法在处理输入数据时所需的时间量级的参数。

weixin_48408800的博客 1565

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

【数据结构与算法篇】 算法衡量方式之时间复杂度与空间复杂度

双维度衡量算法好坏

weixin_74829277的博客 215

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Day25-【13003】短文,什么是算法?如何衡量时间复杂度?什么是最优,平均时间复杂度?

算法的思想是计算机程序的灵魂,算法规定的流程决定着程序的执行步骤。使用辗转相除法求两个正整数最大公因子的欧几里得算法,出现在2300多年前,这是目前已知的最古老的算法。定义1-1算法是一个由若干确定的(无二义性的)、可执行的步骤组成的肯定能够终止的有序步骤集合。算法描述一个问题的求解过程,由一系列解决问题的清晰指令构成。这些指令可以使用自然语言表示也可以使用计算机程序设计语言表示,甚至可以混合使用自然语言与计算机程序设计语言来描述。C语言与自然语言的混合有时称为类C语言,这样描述的算法称为伪代码。

weixin_48146444的博客 1209

时间复杂度是衡量算法执行时间随输入数据规模增长而增长的量度

**时间复杂度(Time Complexity)**是算法分析中的核心概念,用于衡量算法运行时间随输入规模增长的变化趋势,反映算法的效率。它关注的是当输入规模趋近于无穷大时,算法执行时间的**增长阶数**,而非具体的执行时间(如毫秒数)。

[Blog][Domain] programb.blog.youkuaiyun.com 2157

什么是算法的空间复杂度和时间复杂度,分别怎么衡量。

时间复杂度:衡量算法的运行时间,通常用大O记号表示。空间复杂度:衡量算法运行过程中占用的额外内存空间,也用大O记号表示。在实际开发中,时间和空间复杂度需要综合考虑,以选择最适合问题的算法。

sekaii的专栏 907

【时间复杂度与空间复杂度】衡量算法的标准,这篇文章让大家更深刻的理解时间复杂度和空间复杂度

【时间复杂度与空间复杂度】衡量算法的标准,这篇文章让大家更深刻的理解时间复杂度和空间复杂度

程序员良辰 979

【数据结构和算法初阶(C语言)】时间复杂度(衡量算法快慢的高端玩家,搭配例题详细剖析)

算法在编写成可执行程序后,运行时需要耗费时间资源和空间(内存)资源 。因此衡量一个算法的好坏,一般 是从时间和空间两个维度来衡量的,即时间复杂度和空间复杂度。 大O符号(Big O notation):是用于描述函数渐进行为的数学符号。 本质是就是抓主要影响的项就行,当我们的表达式中未知数非常大,比如N=200万亿,那么他的常数倍或者再增加常数,就像对于大海来说,多一碗水少一碗水没有区别,我们只用抓主要因素来大概估算我们算法和程序的时间复杂度就可以。 所以:重要:大O的渐进表示法去掉了那些对结果影响不大

m0_71503225的博客 1751

衡量算法的执行效率-算法的时间复杂度

数据结构和算法,是解决 “快” 和 ”省“ 的问题,如何衡量算法的执行效率,就要用到时间复杂度分析、空间复杂度分析。

不会骑摩托的程序员不是好的摄影师 849

算法效率衡量指标之时间复杂度概念、空间复杂度概念(笔记)

时间复杂度 假设每一行代码的执行时间为unit_time T(n):代码的总执行时间 f(n):每行代码执行的次数总和 O:表示代码的执行时间T(n)与f(n)表达式成正比 T(n)=O(f(n)) 大 O 时间复杂度实际上并不具体表示代码真正的执行时间,而是表示代码执行时间随数据规模增长的变化趋势,所以,也叫作渐进时间复杂度(asymptotic time complexity),简称时间复...

u012002125的博客 2068

【数据结构】时间复杂度、空间复杂度(如何衡量一个算法的好坏 算法的复杂度 时间复杂度的概念 大O的渐进表示法 常见时间复杂度计算举例)

时间复杂度主要衡量一个算法运行的快慢,空间复杂度主要衡量一个算法运行所需要的额外空间,如今算法的时间复杂度我们需要特别关注。通过这两个维度我们可以评估算法的效率,它的时间复杂度是多少,空间复杂度是多少,如何优化它?空间复杂度不是程序占用了多少bytes的空间,因为这个也没太大意义,所以空间复杂度算的是变量的个数。随着时代的发展,设备内存变大,空间复杂度的优化没有太大的需求了,相对而言不那么关注空间复杂度。得到的结果就是大O阶。

m0_68800221的博客 542

算法效率衡量标准(时间复杂度)

时间复杂度简介: 相信大多数人判断一个算法的好坏就是比较算法的执行时间,即经过多长的时间可以运算出结果。其实这并不是正确的。如果对于解决一个问题有2种算法,算法1的执行时间小于算法2,这并不能代表算法1优于算法2。假设执行算法1的计算机性能和环境都低于执行算法2的计算机的性能和环境,那么算法1可能执行的时间会更长。所以可以看出仅仅根据执行时间来衡量算法的优劣不一定是正确的。 算法的衡量...

weixin_45290455的博客 4650

Day11如何衡量算法的时间复杂度和空间复杂度

一、排序算法的介绍 简介 排序也称排序算法 (Sort Algorithm),排序是将一组数据,依指定的顺序进行排列的过程。 排序的分类: 内部排序: 指将需要处理的所有数据都加载到内部存储器中进行排序。 外部排序法: 数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。 常见的排序算法分类(见下图): 二、算法的时间复杂度 1、度量一个程序(算法)执行时间的两种方法 1)事后统计的方法 这种方法可行, 但是有两个问题:一是要想对设计的算法的运行性能进行评测,需要实际运行该程序

发发的博客 3838
上一篇: C内存管理
下一篇: static的作用
love1code
博客等级 码龄12年 19粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值