码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 算法-复杂度


    大O表示法 

    评估算法性能,主要评估的问题是输入规模n与元素的访问次数f(n)的关系

    O(g(n)),g(n)是这个算法的复杂度上界。

    例如O(n^2),算法的最大消耗就是n^2,因为评估是往往把低阶项和常用省略。

    所谓复杂度就是看循环内的语句执行次数的量级。

    理解对数

    2^4 = 16

    以2为底数,增长10次就到达了1024

    n^2就是整体取值的趋势

    4 = log2^16,表示16以2为底数减少,减少4次为1

    也可表示当指数以log2^n的速度增长时,那么对数整体以n^2的速度增长

    从计算的角度理解复杂度

    如果计算机一秒能处理O(n)的运算10的八次方次,那么一秒能处理O(n^2)的运算就为10的四次方次,一秒能处理O(n^3)的运算为500次。CPU处理的运算的次数是一样的,但是解决的问题的多少是不同的,能解决O(n)类型的问题10的八次方个的话,只能解决O(n^3)类型的问题500个,如果能将O(n^3)的问题转换为O(n)类型的问题,那么问题的解决效率将大大提高。

    问题的复杂度高,意味着处理一个问题将花费的时间长,单位时间内计算的单位就很小,也就是计算的很慢。

     相同的问题,如果复杂度是n,意味着有n的数量级次计算,如果是n^3,意味着有n^3数量级次计算。

    递归形式算法的性能分析

     求n的阶乘

    1. static int f1(int n){
    2. if(n==1)
    3. return 1;
    4. return n*f1(n-1);
    5. }

    乘n是常数阶运算O(1),T(n)=O(1)+T(n-1),每次运算都是O(1),一共有n次,就是n*O(1),得O(n)。

    斐波那契

    1. public static int f1(int n){
    2. if(n==1 || n==2) return 1;
    3. return f1(n-1) + f1(n-2);
    4. }

    T(n) = T(n-1)+T(n-2)+O(1)

                约等于  2*T(n-1)+O(1)= 2*(T(n-2)+T(n-3)+O(1))+O(1)

                约等于 2*2*T(n-2)+3O(1)

                减多少次就乘多少个2

                 最后得2^n

  • 相关阅读:
    吐血推荐的思维导图工具,完全免费,没有上限,非常的Nice
    Bias in Emotion Recognition with ChatGPT
    微信小程序之旅
    数据库管理-第四十三期 水一期(20221113)
    不要高估迷信自己的毅力:交钱后坚持培训的比例不到1%
    Devexpress GridControl GridView表中列增加按钮
    SpringMVC相对路径和绝对路径
    Python open with as---文件处理
    springboot的缓存和redis缓存,入门级别教程
    webpack5学习进阶:模块、依赖与扩展功能(PostCSS、Web Works、TypeScript)
  • 原文地址:https://blog.csdn.net/weixin_52972575/article/details/125790717
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号