当前位置: 首页 > news >正文

时间和空间复杂度

目录

算法的复杂度

时间复杂度

大O的渐进表示法

各种求时间复杂度例题:

计算冒泡排序的时间复杂度:

计算两个循环的时间复杂度: 

计算二分查找的时间复杂度:

计算阶乘递归的时间复杂度:

 计算斐波那契递归的时间复杂度:

 空间复杂度

各种求空间复杂度的例题:

求冒泡排序的空间复杂度:

求斐波那契数列的空间复杂度

 算法常见复杂度:


算法的复杂度

时间复杂度主要衡量一个算法的运行快慢,而空间复杂度主要衡量一个算法运行所需要的额外空间。

时间复杂度

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

大O的渐进表示法

大O符号:用于描述函数渐进行为的数学符号。

推导大O阶方法:

  1. 用常数1取代运行时间中的所有加法常数。
  2. 在修改后的运行次数中,只保留最高阶项。
  3. 如果最高阶项存在且不是1,则去除与这个项目相乘的常数。得到的结果就是大O阶。

大O的渐进表示法去掉了对结果影响不大的项,简洁表示出了执行次数。

注意:

  • O(1)并不是代表1次,而是常数次。
  • 大O渐进表示法只是估算。

另外有些算法的时间复杂度存在最好,平均,最坏的情况:

  • 最坏情况:任意输入规模的最大运行次数(上界)。
  • 平均情况:任意输入规模的期望运行次数
  • 最好情况:任意输入规模的最小运行次数(下界)

例如:在一个长度为N的数组中搜索一个数据x

最好情况:1次找到

最坏情况:N次找到

平均情况:N/2次找到

在实际中,一般只关注最坏运行情况,所以它的时间复杂度为O(N)。

各种求时间复杂度例题:

计算冒泡排序的时间复杂度:

计算两个循环的时间复杂度: 

计算二分查找的时间复杂度:

 注意:在c语言中logN的底数默认是2。

计算阶乘递归的时间复杂度:

下面是变式:

 计算斐波那契递归的时间复杂度:

 空间复杂度

空间复杂度也是一个数学表达式,是对一个算法在运行过程中临时占用存储空间大小的量度。

空间复杂度算的是变量的个数,计算规则也使用大O渐进表示法。

注意:函数运行时所需要的栈空间(存储参数,局部变量,一些寄存器信息等)在编译期间已经确定好了,因此空间复杂度主要通过函数在运行时候显式申请的额外空间来确定。

各种求空间复杂度的例题:

求冒泡排序的空间复杂度:

求斐波那契数列的空间复杂度

 

 算法常见复杂度:

相关文章:

  • 设计测试用例
  • 3分钟了解安全数据交换系统有什么用!
  • 360勒索病毒:了解最新变种.360,以及如何保护您的数据
  • 升压斩波电路的simulink建模与仿真
  • 外卖系统开发:构建高效、安全的外卖平台
  • Arduino/Android 蓝牙通信系统设计解决方案
  • 面试心得总结ing版
  • 模式识别与机器学习(十):梯度提升树
  • Iceberg: COW模式下的MERGE INTO的执行流程
  • 【小白攻略】php 小数转为百分比,保留两位小数的函数
  • FFmpeg常见命令行
  • 【知识点随笔分享 | 第九篇】常见的限流算法
  • Linux命令-查看内存、GC情况及jmap 用法
  • Linux可执行文件动态库依赖
  • MyBatis:Generator
  • EasyExcel使用: RGB字体,RGB背景颜色,fillForegroundColor颜色对照表
  • Python中Pandas详解之数据结构
  • 深度学习中的Dropout
  • 手把手教你使用 PyTorch 搭建神经网络
  • python使用selenium控制浏览器进行爬虫
  • 中华人民共和国和俄罗斯联邦在纪念中国人民抗日战争、苏联伟大卫国战争胜利和联合国成立80周年之际关于进一步深化中俄新时代全面战略协作伙伴关系的联合声明
  • 经彩申城!上海网络大V沙龙活动走进闵行
  • 国家主席习近平同普京总统签署关于进一步深化中俄新时代全面战略协作伙伴关系的联合声明
  • 高进华“控股”后首份年报出炉,史丹利账上可动资金大幅缩水
  • 万里云端遇见上博--搭乘“上博号”主题飞机体验记
  • 外交部:印巴都表示不希望局势升级,望双方都能保持冷静克制