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

算法时间、空间复杂度(二)

目录

大O渐进表示法 

一、时间复杂度量级的判断

定义:

例一:执行2*N+1次

例二:执行M+N次

例三:执行已知次数

例四:存在最好情况和最坏情况

顺序查找

冒泡排序

二分查找

例五:阶乘递归

​编辑

例六:斐波那契递归

​编辑

总结:


算法时间、空间复杂度(一)-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/Xiaodao12345djs/article/details/142931619?spm=1001.2014.3001.5501

大O渐进表示法 

我们通常用大O渐进表示法来表示时间复杂度和空间复杂度的量级

例如:如果一个程序执行了2N+1次,那么这个程序的时间复杂度属于O(N)这个量级

一、时间复杂度量级的判断

定义:

算法中的基本操作的次数,与环境无关

例一:执行2*N+1次

时间复杂度的量级为O(N)

  • 保留执行次数的最高阶
  • 去掉最高阶的常系数
for(int k=0; k<2*N; k++)
{++count;
}while(w--)
{++count;
}

例二:执行M+N次

时间复杂度为O(N)或者O(M)

  • 如果M>>N,时间复杂度量级为O(M)
  • 如果N>>M,时间复杂度量级为O(N)
  • 如果相差不多,相当于执行2*N次或者2*M次,所以时间复杂度量级为O(N)或者O(M)
for(k = 0; k < M; k++)
{count++;
}
for(k = 0; k < N ; k++)
{count++;
}

例三:执行已知次数

时间复杂度位O(1)

for(int k = 0; k < 10; k++)
{count++;
}

例四:存在最好情况和最坏情况

如果出现最好情况执行次数和最坏情况执行次数,看最坏情况(下限)

  • 顺序查找

const char* strchr(const char* str, int characeter)
while(*str)
{if(*str == character){return str;}++str;
}

最好情况:执行1次就能找到

最坏情况:执行N次才能找到

时间复杂度为O(N)

  • 冒泡排序

最好情况:N-1次

最坏情况:N(N-1)/2(等差数列)

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

  • 二分查找

最好情况:1次

最坏情况:logN(以2为底N的对数,在C语言中会简化为logN,有的书上会简化成lgN(不推荐))

时间复杂度为O(logN)

​​​​​​​例五:阶乘递归

long long Fac(size_t N)
{if(0 == N)return 1;return Fac(N-1)*N
}

时间复杂度为O(N)

例六:斐波那契递归

long long Fib(size_t N)
{if(N<3)return 1;return Fib(N-1)+Fib(N-2);
}

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

总结:

  • O(1)           常数阶
  • O(logN)       对数阶
  • O(N)           线性
  • O(N*logN)    nlog阶
  • O(N^2)        平方阶
  • O(N^3)        立方阶
  • O(2^N)        指数阶
http://www.lryc.cn/news/461412.html

相关文章:

  • 高级java每日一道面试题-2024年10月11日-数据库篇[Redis篇]-Redis都有哪些使用场景?
  • 0047__【python打包分发工具】setuptools详解
  • 自定义拦截器处理token
  • Scrapy | 使用Scrapy进行数据建模和请求
  • 学习笔记——交换——STP(生成树)基本概念
  • 机器学习笔记-2
  • SpringSecurity(一)——认证实现
  • VMWare NAT 模式下 虚拟机上不了网原因排查
  • R语言手工实现主成分分析 PCA | 奇异值分解(svd) 与PCA | PCA的疑问和解答
  • 第三届OpenHarmony技术大会在上海成功举办
  • 数字化:IT部门主导还是业务部门主导?
  • MySQL表的基本查询下/分组聚合统计
  • 条款3: 理解decltype
  • TCP:过多的TIME_WAIT
  • 化学元素分子量、氧化物系数计算python类
  • torch.utils.data.DataLoader参数介绍
  • echarts 入门
  • WPF实现类似网易云音乐的菜单切换
  • OpenCV人脸检测与识别:构建智能识别系统
  • H5 Canvas 举牌小人
  • rom定制系列------小米6x_澎湃os1.0.28安卓13定制固件修改 刷写过程与界面预览
  • 电脑硬件性能:HDD + SSD + CPU + GPU
  • 通过粒子系统customData传值给材质球
  • 常用分布的数学期望、方差、特征函数
  • ssh-配置
  • Python 在 JMeter 中如何使用?
  • 贪心day1
  • Redis 完整指南:命令与原理详解
  • 【2024软考高级架构师】论文篇——3、论Web系统的测试技术及其应用
  • 迪杰斯特拉算法的理解