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

目录

大O渐进表示法

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

定义:

例一:执行2*N+1次

例二:执行M+N次

例三:执行已知次数

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

顺序查找

冒泡排序

二分查找

例五:阶乘递归

​编辑

例六:斐波那契递归

​编辑

总结:


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

大O渐进表示法

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

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

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

定义:

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

例一:执行2*N+1次

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

  • ++保留执行次数的最高阶++
  • ++去掉最高阶的常系数++
cs 复制代码
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)++
cs 复制代码
for(k = 0; k < M; k++)
{
    count++;
}
for(k = 0; k < N ; k++)
{
    count++;
}

例三:执行已知次数

时间复杂度位O(1)

cs 复制代码
for(int k = 0; k < 10; k++)
{
    count++;
}

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

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

顺序查找

cs 复制代码
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)

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

cs 复制代码
long long Fac(size_t N)
{
    if(0 == N)
        return 1;
    return Fac(N-1)*N
}

时间复杂度为O(N)

例六:斐波那契递归

cs 复制代码
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) 指数阶
相关推荐
颜酱17 分钟前
理解二叉树最近公共祖先(LCA):从基础到变种解析
javascript·后端·算法
地平线开发者16 小时前
SparseDrive 模型导出与性能优化实战
算法·自动驾驶
董董灿是个攻城狮17 小时前
大模型连载2:初步认识 tokenizer 的过程
算法
地平线开发者17 小时前
地平线 VP 接口工程实践(一):hbVPRoiResize 接口功能、使用约束与典型问题总结
算法·自动驾驶
罗西的思考17 小时前
AI Agent框架探秘:拆解 OpenHands(10)--- Runtime
人工智能·算法·机器学习
HXhlx20 小时前
CART决策树基本原理
算法·机器学习
Wect21 小时前
LeetCode 210. 课程表 II 题解:Kahn算法+DFS 双解法精讲
前端·算法·typescript
颜酱1 天前
单调队列:滑动窗口极值问题的最优解(通用模板版)
javascript·后端·算法
Gorway1 天前
解析残差网络 (ResNet)
算法
拖拉斯旋风1 天前
LeetCode 经典算法题解析:优先队列与广度优先搜索的巧妙应用
算法