数据结构_算法概述

算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。

1、基本特性:

  • 输入输出
  • 有穷性
  • 确定性
  • 可行性

2、设计要求

  • 正确性
  • 可读性
  • 健壮性(当输入不合法时,进行相关处理,而不是出现异常或者是莫名其妙的结果)
  • 时间效率高
  • 存储量低

3、算法效率的度量方法

  • 事后统计法
        受硬件影响较大,需要事先实现浪费时间。不推荐。
  • 事前分析估计方法
        依据统计方法对算法进行估计。
        程序在计算机上运行时所消耗的时间取决于:
        1、算法的策略、方法。
        2、编译产生的代码质量。
        3、输入的规模。
        4、机器执行指令的速度。

4、算法时间复杂度

使用大O记法
推到大O阶:
    1、用常数1取代运行时间中的所有加法常数。
    2、在修改后的运行次数函数中,只保留最高阶项。
    3、如果最高阶项存在且不是1,则去除与这个项相乘的常数。
得到的结果就是大O阶。
    常数阶:O(1)
    线性阶:O(n)
    对数阶:O( logn l o g n
    平方阶:O( n2 n 2 ),如果是外循环m,内循环n,那就是O( n×m n × m

    常见时间复杂度

执行次数函数 非正式术语
12 12 O(1) O ( 1 ) 常数阶
2n+3 2 n + 3 O(n) O ( n ) 线性阶
3n2+2n+1 3 n 2 + 2 n + 1 O(n2) O ( n 2 ) 平方阶
5log2n+60 5 l o g 2 n + 60 O(logn) O ( l o g n ) 对数阶
2n+3nlog2n+36 2 n + 3 n l o g 2 n + 36 O(nlogn) O ( n l o g n ) nlogn阶
8n3+2n2+3n+8 8 n 3 + 2 n 2 + 3 n + 8 O(n3) O ( n 3 ) 立方阶
2n 2 n O(2n) O ( 2 n ) 指数阶

耗费时间大小排序
O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n3)<O(2n)<O(n!)<O(nn) O ( 1 ) < O ( l o g n ) < O ( n ) < O ( n l o g n ) < O ( n 2 ) < O ( n 3 ) < O ( 2 n ) < O ( n ! ) < O ( n n )

猜你喜欢

转载自blog.csdn.net/dongdong_csdn/article/details/79167237