码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【Master公式】对于这一类符合的递归可以直接确定时间复杂度


    Master公式

    T(N) = a T(N/b) + O(N^d)
    对于这一类符合的递归可以直接确定时间复杂度
    a,b,c为常数
    1、子问题调用了a次
    2、子问题的规模一致,N/b指每个子问题处理总规模/b个规模(只看规模,常数个忽略,如L,mid,mid+1,R)
    3、除子问题调用之外的时间复杂度为O(N^d)
    结果分为3种情况:
    1) log (b) a > d (log以b为底a的对数)
    O(N^(log (b) a)
    2) log (b) a < d
    O(N^d)
    3) log (b) a == d
    O(N^d * log N)

    例1:看process方法是否符合

    即快排的递归算法

    	 public static void process01(int[] arr, int L, int R){
            if(L >= R){
                return;
            }
            int M = partition(arr, L, R);
            process01(arr, L, M - 1);
            process01(arr, M + 1, R);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    L……R上假设有N个数
    子问题1:N/2
    子问题2:N/2
    b=2:子问题规模一致,数据规模都为N/2,
    a=2:子问题调用两次
    d=0:其中其他语句时间复杂度O(1)
    结果:T(N) = 2T(N/2) + O(N^0) 即2T(N/2) + O(1)
    log (2) 2 = 1 > 0
    时间复杂度为:O(N) 这里仅仅指递归这个方法的时间复杂度,具体快拍还要乘方法内部复杂度

    例2:N个数,max{前2/3N算递归max,后2/3N递归max}

    在这里插入图片描述
    a = 2:调用子问题两次
    b = 3/2: 因为N下一个子问题的规模是2/3 * N 相当于N/(3/2)
    d = 0: 无其他语句或都为单行规模
    结果:T(N) = 2T( N/(3/2) ) + O(d^0)
    log(3/2) 2 = 多少?其中

    当底数大于1时,真数大的对数大,则 log3 2 当真数相同时,底数大于1时,底数大的对数小,则 log3 12>log4 12
    当底数在0到1之间时,真数大的对数小,则 log0.5 2>log0.5 3
    当真数相同时,底数在0到1之间时,底数大的对数大,则 log0.5 2

    所以 log(3/2) 1 < log(3/2) 2 < log(3/2)3
    0 = d < 3/2< log(3/2) 2
    时间复杂度为:O( N^(log(3/2) 2) )

    例3:例1 process加一句,打印所有数

    即每次进入方法,都要遍历并打印N个数
    T= 2T(N/2) + O(N) 除了调用过程之外的复杂度为b个O(N),因为有一个打印行为
    log(b) a = 1 == d -> O(N^d)
    时间复杂度为:O(N)

  • 相关阅读:
    Python+Requests+Pytest+Excel+Allure 接口自动化测试项目实战【框架之间的对比】
    Java基础进阶Map-HashMap集合
    cannot convert ‘this‘ pointer from ‘const ‘ to ‘ &‘
    如何在生产环境中安装jdk+监控关键字错误日志脚本
    【编程题】【Scratch四级】2022.09 班级成绩处理
    原神3D卡通动漫二次元角色模型Blender已绑骨骼
    Kong实现禁止国外IP访问
    Redis 异常三连环
    [汇编语言]数据处理的两个基本问题
    STM32学习和实践笔记(20):定时器
  • 原文地址:https://blog.csdn.net/qq_24990383/article/details/134021366
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号