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

目录

大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) 指数阶
相关推荐
杨凯凡10 分钟前
【012】图与最短路径:了解即可
java·数据结构
j_xxx404_1 小时前
C++算法:哈希表(简介|两数之和|判断是否互为字符重排)
数据结构·c++·算法·leetcode·蓝桥杯·力扣·散列表
Aaron15881 小时前
RFSOC+VU13P+RK3588的核心优势与应用场景分析
嵌入式硬件·算法·matlab·fpga开发·信息与通信·信号处理·基带工程
优家数科1 小时前
精准预测:基于多维用水量的滤芯寿命预警算法
算法
脱氧核糖核酸__1 小时前
LeetCode热题100——189.轮转数组(题解+答案+要点)
数据结构·c++·算法·leetcode
贾斯汀玛尔斯2 小时前
每天学一个算法-快速排序(Quick Sort)
数据结构·算法
炽烈小老头2 小时前
【每天学习一点算法 2026/04/16】逆波兰表达式求值
学习·算法
优家数科2 小时前
水质监测不准?解密云端 TDS 数据建模纠偏算法
算法
木井巳2 小时前
【递归算法】组合总和
java·算法·leetcode·决策树·深度优先·剪枝
coding者在努力2 小时前
被n整除的n位数
c++·算法