详解时间复杂度计算公式(附例题细致讲解过程)

这篇具有很好参考价值的文章主要介绍了详解时间复杂度计算公式(附例题细致讲解过程)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这几天开始刷力扣上面的算法题,有些题目上面限制时间复杂度空间复杂度,题目虽然写出来了,但是很没底。印象里数据结构老师讲过一点,沉睡的记忆苏醒了。只记得一个时间复杂度是O(n),空间复杂度是S(n)。for循环常常是O(n),具体是怎么算的不清楚。所以在看了相关的视频教学后,总结一下时间复杂度的计算公式,希望能给大家的学习带来帮助!

目录

一、什么是时间复杂度 

二、单层循环时间复杂度计算公式

三、两层循环时间复杂度计算公式

四、多层循环时间复杂度计算公式

方法一:抽象为计算三维物体体积

方法二:列式求和


一、什么是时间复杂度 

时间复杂度(Time complexity)是一个函数,它定性描述该算法的运行时间。这是一个代表算法输入值的字符串的长度的函数. 时间复杂度常用大O表述,不包括这个函数的低阶项和首项系数。

时间复杂度大小比较:

时间复杂度怎么算,白话机器学习的数学学习笔记,算法,数据结构,时间复杂度,推荐算法

时间复杂度分类:

  • 算法完成工作最少需要多少基本操作叫做最优时间复杂度,是一种最乐观最理想的状态。
  • 算法完成工作最多需要多少基本操作叫做最坏时间复杂度,是算法的一个保障。
  • 算法完成工作平均需要多少基本操作叫做平均时间复杂度,它可以均匀全面的评价一个算法的好坏。

时间复杂度基本计算规则:

  1. 基本操作即只有常数项,认为其时间复杂度为O(1)
  2. 顺序结构,时间复杂度按加法进行计算
  3. 循环结构,时间复杂度按乘法进行计算
  4. 分支结构,时间复杂度取最大值
  5. 判断一个算法效率时,往往只需要关注操作数量的最高次项,其他次要项和常数项可以忽略
  6. 在没有特殊说明时,我们所分析的时间复杂度都是指最坏时间复杂度

二、单层循环时间复杂度计算公式

 解题步骤

  1. 列出循环趟数t及每轮循环i的变化值
  2. 找到t与i的关系
  3. 确定循环停止条件
  4. 联立两式解方程
  5. 写结果

 例题分析

 例一:

i = n*n;
whlie(i != 1)
    i = i/2;

第一步:列出循环趟数t及每轮循环i的变化值:

t 0 1 2 3
i

第二步:找到t与i的关系:

 

第三步:确定循环停止条件:

第四步:联立第二步第三步两式解方程:

所以得到时间复杂度为:

例二:

x = 0;
while (n>=(x+1)*(x+1))
    x = x+1;

第一步:列出循环趟数t及每轮循环x的变化值:

t 0 1 2 3 4
x 0 1 2 3 4

第二步:找到t与x的关系:

 

第三步:确定循环停止条件:

时间复杂度怎么算,白话机器学习的数学学习笔记,算法,数据结构,时间复杂度,推荐算法

第四步:联立第二步第三步两式解方程:

时间复杂度怎么算,白话机器学习的数学学习笔记,算法,数据结构,时间复杂度,推荐算法

所以得到时间复杂度为:

 例三:

int i = 1;
while (i<=n)
    i = i *2

第一步:列出循环趟数t及每轮循环i的变化值:

t 0 1 2 3 4
i 0 1 2 3 4

第二步:找到t与x的关系:

 

第三步:确定循环停止条件:

第四步:联立第二步第三步两式解方程:

所以得到时间复杂度为:

 例四:

int i = 0;
while (i*i*i<=n)
    i ++;

第一步:列出循环趟数t及每轮循环i的变化值:

t 0 1 2 3 4
i 0 1 2 3 4

第二步:找到t与x的关系:

 

第三步:确定循环停止条件:

第四步:联立第二步第三步两式解方程:

所以得到时间复杂度为:

 例五:

y = 0;
while (y+1)*(y+1) <= n
    y = y+1;

第一步:列出循环趟数t及每轮循环y的变化值:

t 0 1 2 3 4
y 0 1 2 3 4

第二步:找到t与x的关系:

 

第三步:确定循环停止条件:

时间复杂度怎么算,白话机器学习的数学学习笔记,算法,数据结构,时间复杂度,推荐算法

第四步:联立第二步第三步两式解方程:

时间复杂度怎么算,白话机器学习的数学学习笔记,算法,数据结构,时间复杂度,推荐算法

所以得到时间复杂度为:

三、两层循环时间复杂度计算公式

 解题步骤

  1. 列出循环中i的变化值
  2. 列出内层语句的执行次数
  3. 求和,写结果

 例题分析

例一:

int m=0,i,j;
for (i=1;i<=n;i++)
    for(j=1;j<=2*i;j++)
        m++;

第一步列出循环中i的变化值:

第二步列出内层语句的执行次数:

i 1 2 3 4 5 ...... n
内层语句执行次数 2 4 6 8 10 ...... 2*n次

第三步 求和,写结果

时间复杂度怎么算,白话机器学习的数学学习笔记,算法,数据结构,时间复杂度,推荐算法

 例二:

for (i=0;i<n;i++)
    for(j=0;j<m;j++)
        a[i][j] = 0;

第一步列出循环中i的变化值:

第二步列出内层语句的执行次数:

i 0 1 2 3 4 ...... n-1
内层语句执行次数 m m m m m ...... m次

第三步 求和,写结果

时间复杂度怎么算,白话机器学习的数学学习笔记,算法,数据结构,时间复杂度,推荐算法

 例三:

count = 0;
for (k=1;k<=n;k*=2)
    for(j=1;j<=n;j++)
        count ++;

这里k*=2,不再是++,所以要先用单层循环求出变换趟数:

t 1 2 3 4
k 1 2 3 4

时间复杂度怎么算,白话机器学习的数学学习笔记,算法,数据结构,时间复杂度,推荐算法

内层每个都是n,求和则可以得到:

 例四:

for (i=n-1;i>=1;i--)
    for(j=1;j<=i;j++)
        if A[j] > A [j+1]
            A[j]与A[j+1]交换;

第一步列出循环中i的变化值:

第二步列出内层语句的执行次数:

i n-1 n-2 ...... 2
内层语句执行次数 n-2 n-3 ...... 1次

第三步 求和,写结果

时间复杂度怎么算,白话机器学习的数学学习笔记,算法,数据结构,时间复杂度,推荐算法

四、多层循环时间复杂度计算公式

方法一:抽象为计算三维物体体积

方法二:列式求和

例一:

for(i=0;i<=n;i++)
    for(j=0;j<=i;j++)
        for(k=0;k<j;k++)

方法一:抽象为计算三维物体体积:

时间复杂度怎么算,白话机器学习的数学学习笔记,算法,数据结构,时间复杂度,推荐算法

 i依赖于n,j依赖于i,k依赖于j,三者都可以看成是n,再由体积公式可以求出

方法二:列式求和:

时间复杂度怎么算,白话机器学习的数学学习笔记,算法,数据结构,时间复杂度,推荐算法

时间复杂度怎么算,白话机器学习的数学学习笔记,算法,数据结构,时间复杂度,推荐算法文章来源地址https://www.toymoban.com/news/detail-778380.html

到了这里,关于详解时间复杂度计算公式(附例题细致讲解过程)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据结构 --- 复杂度概念及计算讲解(时间复杂度,空间复杂度)

    今天没有sao话,今天认真学习 前言: 经常刷题的人都知道,我们在解决一道题时可能有多个解法,那么如何判断那个解法才是最优解呢? 我们通常从代码的两个方面进行判断:1.时间 2.空间。 –❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀

    2024年03月22日
    浏览(46)
  • 数据结构:时间复杂度和空间复杂度计算

    算法效率分析分为两种:第一种是时间效率,第二种是空间效率。时间效率被称为时间复杂度, 而空间效率被称作空间复杂度。 时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度主 要衡量一个算法所需要的额外空间,在计算机发展的早期,计算机的存储容量很小

    2024年02月11日
    浏览(42)
  • 详解时间复杂度和空间复杂度问题

            前言:本来我并不认为时间复杂度和空间复杂的有多重要,只要日常会判断和分析算法的复杂度即可,但是,不论是在考研的数据结构与算法中,还是在日常的刷题中,我们都会见到,限制我们时间和空间复杂度的算法设计问题,这对我们要求就高了,所以,我们需

    2024年02月02日
    浏览(54)
  • 数据结构-初识复杂度以及如何计算时间复杂度和空间复杂度(详细)

    🌸🌸从今天开始将持续更新数据结构的相关知识点~ 🌸首先,从复杂度开始~ 什么是复杂度呢? 从字面来看就是说复杂的程度,我们需要具备一种工具可以评估某种算法(程序)的好坏,比如运行时间、占用空间等等。 复杂度具体体现在三个方面: 1.算法 2.数据规模 3.输入

    2024年01月16日
    浏览(49)
  • 算法时间复杂度计算

    目录 1.时间复杂度计算 1.1 时间复杂度例题 1.1.1例题 1.1.2例题 1.1.3例题 1.1.4例题 1.2时间复杂度leetcode例题        首先,我们需要了解时间复杂度是什么:算法的时间复杂度是指 算法在编写成可执行程序后,运行时需要耗费的时间资源——通俗的讲,就是一个算法运行的快慢

    2023年04月12日
    浏览(105)
  • 数据结构 | 算法的时间复杂度和空间复杂度【详解】

    数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。 算法(Algorithm):就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为输出。简单来说算法就是一系列的计算步骤,用来将输入数据转

    2024年02月08日
    浏览(56)
  • 时间复杂度详解

    目录 一、算法效率 1.什么是算法效率 2.算法效率有什么用 3.算法的复杂度 二、时间复杂度 1.什么是时间复杂度? 2.什么计算时间复杂度? 3.大O的渐进表示法 4.时间复杂度计算实例 三、空间复杂度 1.什么是空间复杂度 2.空间复杂度计算实例 算法效率是指算法执行的时间,算

    2024年02月16日
    浏览(27)
  • Python时间复杂度计算习题

    计算时间复杂度是计算机科学中的重要技能,尤其是在算法和数据结构的领域。以下是关于Python时间复杂度计算的20个问题,这些问题可以用于测试对时间复杂度的理解: 对于以下代码片段,时间复杂度是多少? 下面代码的时间复杂度是? 以下代码的时间复杂度是? 这段代

    2024年02月13日
    浏览(38)
  • 数据结构 -> 时间复杂度和空间复杂度的计算(做题助推器)

    文章目录 ✅作者简介:大家好,我是橘橙黄又青,一个想要与大家共同进步的男人😉😉 🍎个人主页:橘橙黄又青_C语言,函数,指针-CSDN博客 主要掌握时间复杂度和空间复杂度的计算,在刷题中完成刷题要求。 概念做了一定的简化慢慢了解,经过 C语言的动态内存管理 我们已

    2024年02月04日
    浏览(43)
  • C++时间复杂度详解

    一般时间复杂度的表现形式是 大O表示法 ,即 O( ) 。 大O表示法有以下4条法则: 1.括号中所有 常数加数省略 ,如只有一个常数, 记为1 。如O(372+n)→O(n)、O(89)→O(1)。 2.括号中 去掉所有常数乘数 如O(2n)→O(n)、O(3n+n+45*2)→O(4n+90)→O(4n)→O(n)。 3.括号中的数是整个代码每个 操作次

    2024年02月14日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包