目录

1.什么是时间复杂度和空间复杂度

1.1 时间复杂度

1.2 空间复杂度

2. 如何计算时间复杂度和空间复杂度

2.1 使用大O阶方法

2.2 计算一些常用算法的时间复杂度

2.3 计算一些常用算法的空间复杂度

3.对复杂度有要求的算法练习题


1.什么是时间复杂度和空间复杂度

在说这两个复杂度之前我们先要明白什么叫算法的效率

算法效率分为两种:时间效率 和 空间效率

1)时间效率被称为时间复杂度,它主要是衡量一个算法的运行速度

2)空间效率被称为空间复杂度,它主要是衡量一个算法所需要的额外空间

1.1 时间复杂度

一个算法所花费的时间与其中语句的执行次数成正比例,算法中的基本操作的执行次数,为算法的时间复杂度。

1.2 空间复杂度

空间复杂度是对一个算法在运行过程中临时占用存储空间大小的量度 。空间复杂度不是程序占用 了多少bytes的空间,因为这个也没太大意义,所以空间复杂度算的是变量的个数。

2. 如何计算时间复杂度和空间复杂度

2.1 使用大O阶方法

 在实际中计算时间复杂度时,并不一定要计算精确的执行次数,而只需要大概执行次数,所以我们使用大O的渐进表示法。
大O符号:是用于描述函数渐进行为的数学符号。
推导大O阶方法:
1、用常数1取代运行时间中的所有加法常数。
2、在修改后的运行次数函数中,只保留最高阶项
3、如果最高阶项存在且不是1,则去除与这个项目相乘的常数。得到的结果就是大O阶。

2.2 计算一些常用算法的时间复杂度

根据上面的大O阶方法,计算一下Func1基本操作执行了多少次

下面可以看下这些练习题,分析练习使用大O的渐进表示法

练习1,计算Func2的时间复杂度

 练习2,计算Func3的时间复杂度

练习3,计算Func4的时间复杂度

练习4,计算strchar的时间复杂度

练习5,计算Bubblesort的时间复杂度

 练习6,计算Binarysearch的时间复杂度

 练习7,计算Factorial的时间复杂度

练习8,计算斐波那契递归fibonacci的时间复杂度

所以递归的时间复杂度 =  递归的次数 * 每次递归执行的次数 

常见的时间复杂度

O(N)   O(N^2)   O(logN)   O(1)

2.3 计算一些常用算法的空间复杂度

空间复杂度是对一个算法在运行过程中临时占用存储空间大小的量度,计算的是变量个数
时间是累计的,空间是不累计的
循环走了几次,重复利用的是一个空间

下面看几个例题

练习1,计算Bubblesort的空间复杂度

 练习2,计算Fibonacci的空间复杂度

练习3,计算Factorial的空间复杂度

3.对复杂度有要求的算法练习题

在有些算法练习题中,会对复杂度有一些要求,所以在我们做题时就要,注意算法的设计

下面看一下力扣中的两个题

1.链接 面试题 17.04. 消失的数字 - 力扣(LeetCode) (leetcode-cn.com)

int missingNumber(int* nums, int numsSize){int x=0;//跟数组中的值异或for(int i=0;i<numsSize;++i){x^=nums[i];}//再跟[0,N]之间数字异或for(int j=0;j<numsSize+1;++j){x^=j;}return x;
}

2.链接   189. 轮转数组 - 力扣(LeetCode) (leetcode-cn.com)

 

void Reverse(int* nums, int left, int right){while(left<right){int tmp=nums[left];nums[left]=nums[right];nums[right]=tmp;++left;--right;}
}
void rotate(int* nums, int numsSize, int k){if(k>=numsSize){k%=numsSize;}Reverse(nums, numsSize-k, numsSize-1);Reverse(nums, 0, numsSize-k-1);Reverse(nums, 0, numsSize-1);}

时间复杂度和空间复杂度计算相关推荐

  1. <时间复杂度和空间复杂度计算>《数据结构(C语言版)》

    人总得接受平凡和遗憾,但那不是一直自甘堕落的理由.显贵出身也好,泥腿子出身也罢,人生一世,你不仅为自己而活,你还承担着家族崛起的使命,是承上启下的一代,往大了说,也是国家.社会的一份子,总得做些有意义 ...

  2. java中怎么计算算法的时间复杂度_算法的时间复杂度和空间复杂度计算

    一.算法的时间复杂度定义 在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级.算法的时间复杂度,也就是算法的时间量度.记作:T(n) ...

  3. 深度优先算法(DFS)和广度优先算法(BFS)时间复杂度和空间复杂度计算精讲

    现在我们设定任务为到山东菏泽曹县买牛逼,需要利用深度优先算法(DFS)和广度优先算法(BFS)在中国.省会.市.区县这张大的树中搜索到曹县,那么这个任务Goal就是找到曹县. 假如图的最大路径长度m和 ...

  4. 时间复杂度和空间复杂度计算(数据结构C语言实现1)

    写在前面 数据结构C语言系列,和博主一起学习简单的数据结构和算法,都是利用C语言实现,很基础,相信大家都能够学会,都有所收获.记得点赞,收获. 目录 写在前面 本节目标 基本概念 **常见算法的时间复 ...

  5. LeetCode0:学习算法必备知识:时间复杂度与空间复杂度的计算

    算法(Algorithm)是指用来操作数据.解决程序问题的一组方法.算法是大厂.外企面试的必备项,也是每个高级程序员的必备技能.针对同一问题,可以有很多种算法来解决,但不同的算法在效率和占用存储空间上 ...

  6. 【数据结构】时间复杂度和空间复杂度的计算

    目录 一.数据结构 1.什么是数据结构 2.什么是算法 3.数据结构和算法的重要性 4.如何学好数据结构和算法 二.算法效率 三.时间复杂度 1.时间复杂度的概念 2.时间复杂度的表示方法 3.算法复 ...

  7. 数据结构--时间复杂度计算和空间复杂度计算篇

    时间复杂度和空间复杂度 一.时间复杂度 1.定义 2.三种时间复杂度 3.计算 *计算 #计算步骤 #常用技巧 #例题解析 二.空间复杂度 #定义 *计算 #计算步骤 #常用技巧 #例题解析 一.时间 ...

  8. 计算算法的时间复杂度和空间复杂度

    算法的时间复杂度和空间复杂度-总结 通常,对于一个给定的算法,我们要做 两项分析.第一是从数学上证明算法的正确性,这一步主要用到形式化证明的方法及相关推理模式,如循环不变式.数学归纳法等.而在证明算法 ...

  9. 时间复杂度计算及空间复杂度计算

    目录 1.算法效率 2.时间复杂度 3.空间复杂度 4.大O渐进表示法 5.常见时间复杂度 常见复杂度对比 oj练习 1.算法效率 算法效率分析分为两种:第一种是时间效率,第二种是空间效率.时间效率被 ...

最新文章

  1. 使用Vue的filters(本地)或filter(全局)过滤常用数据类型
  2. zabbix自动发现oracle表空间并监控其使用率
  3. 近世代数--内外直积--本质是一样的
  4. 语言ppt课件猜拳_人教版初中数学七年级下册阅读与思考 一次方程组的古今表示及解法公开课优质课课件教案视频...
  5. 黑夜主权个人团队html源码 简单修改即可使用
  6. python plt 绘制直方图概率密度和不为1
  7. 第三章 文本与列表控制
  8. Mac M1版电脑安装ps、pr
  9. 基于命令行的网易云音乐下载器netease-dl
  10. 【C#】未能添加对“*.dll”的引用。请确保此文件可访问并且是一个有效的程序集或 COM 组件。
  11. wifi 验证加密 总结
  12. OpenCV学习笔记(Python)———— 画轮廓
  13. 全球卫星导航定位技术的现状
  14. 独身主义也不赖:选择不结婚究竟是选择了什么?
  15. 3D摄影机选择指南,你知道自己需要什么样的摄影机吗?
  16. 被口罩挡住口红色号的年轻人,撑起百亿美瞳市场
  17. pdf拆分成一页一个文件,详细步骤
  18. 电商大数据平台运维案例
  19. PyAutoGUI帮助文档
  20. CAN通讯-使用Python收发CAN数据保姆级教程(包含完整代码)

热门文章

  1. 杂谈:淘宝商城“暴动”事件
  2. U盘强制拔出数据丢失怎么办
  3. 创建Maven项目报错极速解决方案
  4. 使用 RTKLIB 测试Ulbox F9P 解算RTK
  5. [附源码]计算机毕业设计springboot二手书店设计论文
  6. 白话大数据与机器学习
  7. ThinkPad E431 截屏快捷键
  8. 个人微信管理工具有哪些功能
  9. 学会了玩街霸Ⅱ的AI,你怕不怕?
  10. Mock工具Jmockit使用介绍