美文网首页
02 复杂度

02 复杂度

作者: 飘摇的水草 | 来源:发表于2023-01-05 11:35 被阅读0次
01-开发环境搭建
  • 开发工具

    • Eclipse(或者IntelliJ IDEA)
    • 明亮、简洁、舒服
    • 多个项目可以在同一个窗口展示
    • 上课过程中不会使用到后台开发的框架
    • 支持Mac、Windows平台
    • 下载地址:https://www.eclipse.org/downloads/
  • JDK

    • 版本>1.8
02-斐波那契数

什么是算法

  • 算法是用于解决特定问题的一系列的执行步骤
  • 使用不同算法,解决同一个问题,效率可能相关非常大
    • 比如:求第n个斐波那契数

做这道算法题有两种做法,第一种是用递归的方式,第二种是用基本语句的方式

//方式1
int add(int n)
{
    if (n <= 1) {
        return n;
    }
    
    return add(n - 1) + add(n - 2);
}

//方式2
int secondAdd(int n)
{
    if (n <= 1) {
        return n;
    }
    
    int first = 0;
    int second = 1;
    int sum = 0;
    for (int i = 0; i < n-1; i++)
    {
        sum = first + second;
        first = second;
        second = sum;
    }
    return second;
}

实际上,递归的算法虽然看起来语法简单,但实际上其花费的时间要远远大于第二种

03-算法的评估

如何评判一个算法的优劣

  • 一般从以下维度来评估算法的优劣
    • 正确性、可读性、健壮性(对不合理输入的反应能力和处理能力)
    • 时间复杂度:估算程序指令的执行次数(执行时间)
    • 空间复杂度:估算所需占用的存储空间
04-时间复杂度的估算
05-大O表示法
  • 一般用大O表示法来描述复杂度,它表示的是数据规模n对应的复杂度
  • 忽略常数、系数、低阶
    • 9 >> O(1)
    • 2n + 3 >> O(n)
    • n^2 + 2n + 6 >> O(n^2)
    • 4n^3 + 3n^2 + 22n + 100 >> O(n^3)
    • 写法上,n^3表示n的三次方
  • 注意:大O表示法仅仅是一种粗略的分析模型,是一种估算,能帮助我们短时间内了解一个算法的执行效率
  • 对数阶一般省略底数,所以log2 n、log9 n统称为log n
    • log2 N = log2 9 * log9 n
常见复杂度比较
06-斐波那契数复杂度分析

利用递归的算法复杂度是:2^n

算法的优化方向

  • 用尽量少的存储空间
  • 用尽量少的执行步骤(执行时间)
  • 根据情况,可以
    • 空间换时间
    • 时间换空间
多个变量的复杂度
07-leecode

相关文章

  • 数据结构和算法

    01_数据结构和算法绪论.mp4 02_谈谈算法.mp4 03_时间复杂度和空间复杂度.mp4 04_时间复杂度和...

  • 02 复杂度

    01-开发环境搭建 开发工具Eclipse(或者IntelliJ IDEA)明亮、简洁、舒服多个项目可以在同一个窗...

  • 算法 -- 数组&链表 -- 01

    前端同学工作需掌握的相关算法内容。同系列文章(TODO): 算法复杂度 算法 -- 栈&队列 -- 02 算法 -...

  • 02、时间复杂度与空间复杂度

    Big O notation O(1): Constant Complexity 常数复杂度O(log n): L...

  • 最长对称子字符串(2)

    解法一在 http://www.jianshu.com/p/d23c6b0e02e2中已经写了,这个方法复杂度太高...

  • 时间复杂度(下)

    时间复杂度知识点 最好时间复杂度 最坏时间复杂度 平均情况复杂度 均摊时间复杂度

  • 复杂度分析

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

  • 复杂度分析笔记

    常见复杂度 :常数复杂度 :对数复杂度 :线性时间复杂度 :线性对数复杂度 :平方阶 :立方 :K次方阶 :指数阶...

  • 常用的排序算法

    插入排序 复杂度 思路 希尔排序 复杂度 思路 选择排序 复杂度 思路 归并排序 复杂度 思路 快速排序复杂度 思...

  • NLP初学之-算法复杂度

    算法的复杂度分为:时间复杂度和空间复杂度。

网友评论

      本文标题:02 复杂度

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