zoukankan      html  css  js  c++  java
  • 复杂度分析与大O表示法

       学习数据结构和算法要从复杂度分析说起。算法复杂度包括时间复杂度和空间复杂度,两者中又以时间复杂度相对重要,因为就 Web 应用而言,我们常见的性能优化策略都是以空间换时间,比如缓存系统就是如此。

       时间复杂度表示代码执行时间随数据规模增长的变化趋势,表示方法图所示

       

       即大O表示法,我们在分析时间复杂度的时候往往遵循以下原则:

         1、只关注循环执行次数最多的一段代码;

         2、加法法则:总复杂度等于量级最大的那段代码的复杂度;

         3、乘法法则:嵌套代码的复杂度等于嵌套内外代码复杂度的乘积。

       因此,如果分析某个算法的时间复杂度是 T(n) = O(2n+2) / T(n) = O(2n^2 +2n+3),则公式中的低阶、常量、系数三部分都可以忽略,即:T(n) = O(n) / T(n) = O(n^2)

         

       时间复杂度里细分起来又有最好、最坏、平均情况时间复杂度之分:

         1、最好情况时间复杂度就是在最理想的情况下,执行这段代码的时间复杂度;

         2、最坏情况时间复杂度就是在最糟糕的情况下,执行这段代码的时间复杂度;

         3、平均情况时间复杂度顾名思义就是结合概率论分析从最好到最坏每种情况平均下来的加权平均时间复杂度

       一般而言,我们关注复杂度就够了,只有特别严苛条件下或者复杂度相同的情况下,我们才会进一步区分最好、最坏、平均复杂度

       一套图 搞懂“时间复杂度”

  • 相关阅读:
    Android开发之百度地图的简单使用
    Android给ListView添加一个入场动画
    【安卓9】Cursor类、 查询
    【安卓9】SQLiteOpenHelper 类、增删改操作
    【安卓9】SQLiteDatabase类、ContentValues 类
    【安卓9】SQLite数据库
    【安卓8】SD卡操作
    【安卓8】文件的读写
    【安卓8】文件操作
    【安卓7】XML文件解析——PULL解析
  • 原文地址:https://www.cnblogs.com/mzhaox/p/11293993.html
Copyright © 2011-2022 走看看