数据结构入门

数据结构

复杂度分析

大O表示法

  • 算法的执行时间与每行代码的执行次数成正比,用T(n) = O(f(n))表示,其中T(n)表示算法执行总时间,f(n)表示每行代码执行总次数,而n往往表示数据的规模。

复杂度分析法则

  • 单段代码看高频:比如循环
  • 多段代码取最大:比如一段代码中有单循环和多重循环,那么取多重循环的复杂度
  • 嵌套代码求乘积:比如递归、多重循环等
  • 多个规模求加法:比如方法有两个参数控制两个循环的次数,那么这时就取二者复杂度相加

常用的复杂度级别

  • 多项式阶(随着数据规模的增长,算法的执行时间和空间占用,按照多项式的比例增长)

    • O(1)(常数阶)
    • O(logn)(对数阶)
    • O(n)(线性阶)
    • O(nlogn)(线性对数阶)
    • O(n^2)(平方阶)
    • O(n^3)(立方阶)
  • 非多项式阶(随着数据规模的增长,算法的执行时间和空间占用暴增,这类算法性能极差)

    • O(2^n)(指数阶)
    • O(n!)(阶乘阶)

复杂度分析的4个概念

  • 最好情况时间复杂度

    • 在最理想的情况下,执行这段代码的时间复杂度
  • 最坏情况时间复杂度

    • 在最糟糕的情况下,执行这段代码的时间复杂度
  • 平均情况时间复杂度

    • 用代码在所有情况下执行的次数的加权平均值表示
  • 均摊时间复杂度

    • 在代码执行的所有复杂度情况中绝大部分是低级别的复杂度,个别情况是高级别复杂度且发生具有时序关系时,可以将个别高级别复杂度均摊到低级别复杂度上。基本上均摊结果就等于低级别复杂度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值