首页 > 其他分享 >时空复杂度分析

时空复杂度分析

时间:2023-08-11 13:01:26浏览次数:28  
标签:分析 语句 ++ 复杂度 int 算法 时间 时空


算法的复杂度是评估算法优劣一个重要指标,可以帮助我们估算出算法在执行之后所需要的时间和空间。算法的复杂度分为算法的时间复杂度和空间复杂度。在介绍时间复杂度之前,我们需要引入时间频度的概念。时间频度是指算法中语句的执行次数,用

时空复杂度分析_时间复杂度

来表示,

时空复杂度分析_时间复杂度_02

为问题的规模。在算法竞赛中,一般为了理解方便,只用

时空复杂度分析_c++_03

表示复杂度。简单来说,用时间频度的表达方法不够简洁,于是引入了时间复杂度的概念。如果有一个辅助函数

时空复杂度分析_数据_04

,在n趋向于无穷大时,

的极限值为不等于0的常数,则我们近似的将

时空复杂度分析_数据_04

替代

时空复杂度分析_时间复杂度

,记为

,称为算法的渐进时间复杂度。时间复杂度只需要计算算法中最耗时的部分,舍去常数部分,通常用简单的函数来表示。例如,某算法时间频度

,则它的时间复杂度为

时空复杂度分析_c++_07

。按效率从高到低排列,时间复杂度一般有以下几种:

时空复杂度分析_时间复杂度_08

我们举个例子来描述下算法时间复杂度的计算过程。现有如下代码,可以计算出语句1执行了

次,语句2执行了

时空复杂度分析_时间复杂度_02

次,语句3执行了

时空复杂度分析_数据_10

次,则 

,取最耗时部分计算,则时间复杂度为

时空复杂度分析_c++_11


for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
        a++; //语句 1
    }
}
for (int i = 0; i < n; i++) {
    b++; //语句 2
}
while (n) {
    n = n / 2; //语句 3
}

算法的空间复杂度是指运行该算法所占用的存储空间大小,记为

时空复杂度分析_空间复杂度_12

。和时间复杂度类似,通常也是取它的渐进空间复杂度,用一个直观的函数来表示。通过空间复杂度,我们可以预估出算法运行所需的存储空间,包括指令空间、数据空间、动态申请的内存空间等。有如下代码,可以计算出

,则空间复杂度为

时空复杂度分析_c++_11


int a[n];
int b[n][n];

在使用函数递归的时候,别忘记递归消耗的栈空间。

在竞赛中,我们一般认为计算机一秒能执行

时空复杂度分析_数据_14

次基本计算,如果题目给出的时间限制为1秒,那么你选择的算法执行的计算次数最多应该只能在 

时空复杂度分析_c++_15

量级解决这个题目。

一般地:

时空复杂度分析_空间复杂度_16

以上范围仅供参考

标签:分析,语句,++,复杂度,int,算法,时间,时空
From: https://blog.51cto.com/u_16165905/7046237

相关文章

  • 用R语言 做回归分析
    使用R做回归分析整体上是比较常规的一类数据分析内容,下面我们具体的了解用R语言做回归分析的过程。首先,我们先构造一个分析的数据集x<-data.frame(y=c(102,115,124,135,148,156,162,176,183,195),var1=runif(10,min=1,max=50),var2=runif(10,min=1......
  • [数据分析与可视化] Python绘制数据地图5-MovingPandas绘图实例
    MovingPandas是一个基于Python和GeoPandas的开源地理时空数据处理库,用于处理移动物体的轨迹数据。关于MovingPandas的使用见文章:MovingPandas入门指北,本文主要介绍三个MovingPandas的绘图实例。MovingPandas官方仓库地址为:movingpandas。MovingPandas官方示例代码仓库地址为:movin......
  • PHP 使用xhprof 分析程序
    PHP增加扩展xhrofgitclonehttps://github.com/longxinH/xhprof.git./xhprofcdxhprof/extension//path/to/php7/bin/phpize./configure--with-php-config=/path/to/php7/bin/php-configmake&&sudomakeinstallPHP配置增加ini[xhprof]extension=xhprof.so......
  • Nginx日志分析- AWK命令快速分析日志--封禁访问请求最多、最频繁的恶意ip
    Nginx日志常用分析命令示范(注:日志的格式不同,awk取的项不同。下面命令针对上面日志格式执行)1.分析日志的方法1)总请求数cd/usr/local/nginx/logs/wc-laccess.log|awk'{print$1}'166252)独立IP数awk'{print$1}'access.log|sort|uniq|wc-l4003)每秒客户端......
  • 使用awk分析nginx访问日志access.log
    1.awk简介awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk的处理文本和数......
  • 时序分析:Python 中的 ARIMA 模型
    推荐:使用NSDT场景编辑器快速助你搭建可二次编辑的3D应用场景什么是ARIMA模型?ARIMA模型是用于分析和预测时间序列数据的统计模型。ARIMA方法明确迎合了时间序列中的标准结构,为制作熟练的时间序列预测提供了一种简单而强大的方法。ARIMA代表自回归积分移动平均线。它结合了三......
  • CUDA Memcpy的分析
    CUDAMemcpy是一种CUDA库中的函数,可以在主机内存和设备内存之间复制数据。本文将从功能、使用方法、性能、优化等多个角度详细介绍CUDAMemcpy。一、功能CUDAMemcpy的主要功能是在设备内存和主机内存之间进行数据传输。它可以将主机上的数据发送到GPU上,也可以将GPU上的数据传输到......
  • 内核softlockup和hardlockup的一些参数分析
    一参数配置  Softlockup和hardlockup作为内核中的"lockup-看门狗"可以检查系统中调度和中断是否正常运转,其原理可以参考lockup-watchdogs。这两种watchdogs在/proc/sys/kernel/目录下有一些配置参数来对功能进行控制和调整procfs下的接口文件名称接口说明内核中对应的......
  • 作为网络报表分析工具的Quick BI,其功能如何
    QuickBI是一款网络报表分析工具,它可以帮助用户快速、方便、灵活地对数据进行可视化分析和展示。本文将介绍QuickBI的主要功能和优势,以及一些应用场景和客户案例。QuickBI的主要功能有: 数据连接模块:支持多种云上数据源和自建数据库的接入,如RDS、ADS、MaxCompute、ECS自建MySQL、......
  • 店铺营业状态设置_需求分析和设计
         ......