首页 > 编程语言 >数据结构和算法--2.算法复杂度

数据结构和算法--2.算法复杂度

时间:2024-07-16 10:21:24浏览次数:17  
标签:函数 记法 -- 复杂度 算法 时间 常数

算法复杂度

算法分析

➢ 同一算法用不同语言实现,用不同编译器,或是在不同计算机上运行,效率均不同

➢ 使用绝对时间衡量算法效率不合适

基本操作重复执行的次数作为算法的时间度量

判断一个算法的效率时,函数中的常数和其他次要项常常可以忽略,而更应该关注主项(最高阶项)的阶数

算法复杂度的记法

➢ 定义:

• 在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析

T(n)随n的变化情况,并确定T(n)的数量级。

• 算法的时间复杂度,记作:T(n)=O(f(n))。表示随问题规模n的增大,算法执行时

间的增长率和f(n)的增长率相同,称作算法的渐近时间复杂度,简称为时间复杂度。

• 其中f(n)是问题规模n的某个函数。

➢ 用大写O()来体现算法时间复杂度的记法,称之为大O记法。

➢ O(1)为常数阶,O(n)为线性阶,O(n^2)为平方阶。

算法的时间复杂度

  • 常数阶:只有执行次数的差异,跟问题规模n的取值无关,所以为O(1)时间复杂度
  • 线性阶:O(n)
  • 对数阶:O(logn)
  • 平方阶:O(n^2),O(mn)

EXAMPLE

  1. 嵌套循环
int i, j;
for (i = 0; i < n; i++) {
    for (j = i; j < n; j++) { // 注意 j = i 而不是0
        // 时间复杂度为O(1)的程序步骤序列
    }
}

时间复杂度为O(n^2)

常见的算法时间复杂度

算法的空间复杂度

➢ 算法的空间复杂度通过计算算法所需的存储空间实现,记作S(n)=O(f(n)),

其中n为问题的规模,f(n)为语句关于n所占存储空间的函数。

• 可以理解为函数内局部变量的空间

➢ 若算法执行时所需的辅助空间相对于输入数据量而言是个常数,则称此算法的空间复杂度为O(1)。

标签:函数,记法,--,复杂度,算法,时间,常数
From: https://www.cnblogs.com/michaelyeung/p/18304620

相关文章

  • 【信创国产化】Nacos 2.3.2 连接达梦数据库
    JeecgBoot目前提供的nacos版本号2.3.2已经支持与达梦数据库对接。jeecg-boot/jeecg-server-cloud/jeecg-cloud-nacos项目默认加入了达梦驱动和yml配置。如果你是老代码,可以参考下面的步骤手工集成项目地址:https://github.com/jeecgboot/JeecgBoot手工对接达梦数据库1......
  • 如何通过ip地址来获取主机名字,查看IP和MAC地址的命令
    [基于MS]查看MAC地址命令:1、使用ipconfig/all,可以看到具体配置。 (查看IP地址,网关,DNSMAC地址等 )2、如果和局域网中的其它计算机通信过的话,可以用arp-a命令查看其MAC地址。3、另外还可以用nbtstat-a[IP] ,不过只能查看某台具体机器的MAC地址(查看其他机器的MAC地址)。 ......
  • Swift开发基础07-内存布局
    了解Swift的内存布局和底层原理对于编写高性能和内存高效的应用非常重要。接下来,我将更详细地介绍Swift的内存管理机制和一些底层实现细节,包括内存布局、ARC(自动引用计数)、引用类型和值类型的区别,及其在底层的实现。内存布局(MemoryLayout)栈(Stack)栈内存用于存储函数调用帧(Call......
  • 程序的本质
    一、软件执行过程 二、寄存器与内存通常,CPU会先将内存中的数据存储到寄存器中,然后再对寄存器中的数据进行运算 三、汇编语言的发展  汇编语言的种类8086、x86(32bit)、x64(64bit)、ARM(嵌入式移动设备)、......作为iOS开发工程师,主要的汇编语言是AT&T汇编......
  • CF1988C Increasing Sequence with Fixed OR Solution
    题意简述如下:给定一个正整数\(n\),请构造一个正整数序列使其满足以下条件并尽可能长:这个序列中每个数都大于等于\(1\)且小于等于\(n\);这个序列是单调递增的;这个序列中任意两个相邻的数按位或的结果都为\(n\)。通过手玩或者写个最长上升子序列可以发现,我们记这个数在二进制......
  • MES 数采计算公式
    计算举例:某工厂实施8小时作业体制,其中中午休息1小时,上班时间包括早会,检查,清扫等20分钟,上、下午期间各休息15分钟。有一台设备,因应市场需要,每天加班30分钟,该设备理论节拍为0.8分钟,在正常稼动时间内应生产575件,但实际仅生产出418件,实际测得的节拍为1.1分钟,当天更换刀具及故障停机时......
  • ssh: 指定用户从固定ip登录
    一,ssh限制指定用户从固定ip登录:1.配置配置文件[root@blog~]#vi/etc/ssh/sshd_config配置项:[email protected],测试效果,ssh确认git用户的密码正确后会拒绝你[op@blogwork]$gitclonessh://[email protected]:22/wxapiCloninginto'gsapi'[email protected]'s......
  • 安装软件Docker Desktop Installer.exe后导致的AMD显卡掉驱动,提示:The version of AMD
    打开AMDRadeonSoftware时总是弹出“TheversionofAMDRadeonSoftwareyouhavelaunchedisnotcompatiblewithyourcurrentlyinstalledAMDgraphicsdriver."提示框,如图所示:TheversionofAMDRadeonSoftwareyouhavelaunchedisnotcompatiblewithyourcurr......
  • 核客任务实战-WEB服务器攻防篇教程
    前言网站服务器的核客攻防一直是网络安全中最重要的一部分,本书作者在经过数月的努力之后,终于将网站服务器的攻防以深入浅出、简单易懂的方式呈现在您的眼前,让您不必具有高深的网络知识和经验,只要依照本书的操作说明来按图索骥的进行,就能让您充分了解与感受到高手的技巧和行为一......
  • python 库 Paramiko
    Paramiko说明Paramiko是一个用于在Python中实现SSH协议的模块,它允许你在远程服务器上执行命令、上传和下载文件等操作。Paramiko组件paramiko.Transportparamiko.Transport是用于建立安全通信隧道的类,它是SSH连接的核心部分。它负责与远程服务器建立连接、身份验证和......