美文网首页
复杂度分析

复杂度分析

作者: freemanIT | 来源:发表于2022-03-11 14:54 被阅读0次

复杂度分析

斐波那契函数

0 1 2 3 4 5 6 7 0 1 1 2 3 5 8 13 ....

某个位置的数为前两个数之和

    // 递归
    // O(n^2)
    public static int fib(int n) {
        if (n <= 1) {
            return n;
        }

        return fib(n - 1) + fib(n - 2);

    }
    
    // 非递归
    // O(n)
    public static int fib2(int n) {
        if (n <= 1) {
            return n;
        }

        int first = 0;
        int second = 1;
        for (int i = 0; i < n - 1; i++) {
            int sum = first + second;
            first = second;
            second = sum;
        }
        
//      while (n-- > 1) {
//          second += first;
//          first = second - first;
//      }
        
        return second;

    }
复杂度变化 复杂度变化

算法优化方向

  • 用尽量少的存储空间

  • 用尽量少的执行步骤

    时间换空间

    空间换时间

评估算法的优劣

  • 正确性

  • 可读性

  • 健壮性(对不合理输入的反应能力和处理能力)

  • 时间复杂度: 估算程序指令的执行次数. 执行时间

  • 空间复杂度, 估算所需占用空间

其他情况

  • 最好最坏复杂度

  • 均摊复杂度

  • 复杂度震荡

  • 平均复杂度

斐波那契的另一种实现方式--线性代数解法, 特征方程

特征方程解法

相关文章

  • map:169.求众数(投票算法)

    求众数 哈希Map 复杂度分析 时间复杂度:O(N) 空间复杂度: O(N) 投票算法 复杂度分析

  • 复杂度分析

    为什么需要复杂度分析? 大O复杂度表示法 时间复杂度分析 常见复杂度量级 复杂度量级简单说明 空间复杂度 时间复杂...

  • 针对封装数组的简单复杂度分析

    完成了数组的封装之后我们还需对其进行复杂度分析:此处的复杂度分析主要是指时间复杂度分析,算法的时间复杂度反映了程序...

  • 四、复杂度分析& 动态数组的缩容

    复杂度分析 这里分析之前实现的ArrayList和LinkedList的增删改查的复杂度。分析复杂度是要从下面三个...

  • 一个好的算法如何测评

    一个算法的好坏可以根据复杂度分析来测评. 复杂度分析包括时间复杂度和空间复杂度. 1.时间复杂度 需要考虑: 1)...

  • 数据结构与算法 复杂度分析

    复杂度:时间复杂度和空间复杂度。复杂度的分析是学习数据结构与算法的基础! 极简概述 复杂度的分析已经有很多很好...

  • 数据结构与算法学习-复杂度分析

    前言 这一篇笔记主要记录总结了什么是算法复杂度?、为什要做算法复杂度分析?、如何做算法复杂度分析?、常用的复杂度级...

  • 数据结构-复杂度分析

    为什么需要复杂度分析? 复杂度分析实在太重要了。复杂度分析是整个算法学习的精髓,只要掌握了它,数据结构和算法的内容...

  • 算法复杂度分析

    复杂度分析包括: 时间复杂度分析 空间复杂度分析 事后统计法 我们常用事后统计法来统计效率,这种方法也存在一些问题...

  • 模块2作业 朋友圈高性能复杂度

    分析一下微信朋友圈的高性能复杂度 【作业要求】对照模块 2 讲述的复杂度分析方法,分析微信朋友圈的复杂度;针对各个...

网友评论

      本文标题:复杂度分析

      本文链接:https://www.haomeiwen.com/subject/utocdrtx.html