一个值的集合和定义在此集合上的一组操作的总称。
抽象数据类型( Abstract Data Type,ADT ) 是抽象数据组织及与之相关的操作。
程 序 = 数 据 结 构 + 算 法 程序 = 数据结构 +算法 程序=数据结构+算法
算法 (Algorithm)是对特定问题求解步骤的一种描述,它是指令的有限序列,其中的每条表示一个或多个操作。
全称 : 渐进时间复杂度
算法时间复杂度 :事前预估算法时间开销 T ( n ) T(n) T(n) 与问题规模 n n n 的关系 (T表示"time")
大 O O O表示"同阶", 即相同的数量级, 当 n → ∞ n \rightarrow \infty n→∞时 二者之比为常数
因此算法时间复杂度可只考虑阶数高的部分,当问题的规模足够大时, 常数项系数可以忽略
时间复杂度的大 O O O 运算规则
加法 : 多项相加,只保留最高阶的项,且系数变为1
乘法 : 多项相乘,都保留
T ( n ) = T 1 ( n ) × T 2 ( n ) = O ( f ( n ) ) × O ( g ( n ) ) = O ( f ( n ) × g ( n ) ) T(n) = T_1(n)\times T_2(n) = O(f(n))\times O(g(n))=O(f(n)\times g(n)) T(n)=T1(n)×T2(n)=O(f(n))×O(g(n))=O(f(n)×g(n))
举个栗子 : T 1 ( n ) = 2 n + 1 T_1(n) = 2n+1 T1(n)=2n+1 和 T 2 ( n ) = 2 n 2 + n T_2(n) = 2n^2+n T2(n)=2n2+n
做乘法 : T ( n ) = T 1 ( n ) × T 2 ( n ) = O ( 2 n + 1 ) × O ( 2 n 2 + n ) = O ( ( 2 n + 1 ) × ( 2 n 2 + n ) ) = O ( n 3 ) T(n) = T_1(n)\times T_2(n) = O(2n+1)\times O(2n^2+n)=O((2n+1)\times(2n^2+n))=O(n^3) T(n)=T1(n)×T2(n)=O(2n+1)×O(2n2+n)=O((2n+1)×(2n2+n))=O(n3)
时间复杂度大小比较
最坏时间复杂度:最坏情况下算法的时间复杂度
平均时间复杂度:所有输入示例等概率出现的情况下,算法的期望运行时间
最好时间复杂度:最好情况下算法的时间复杂度
参考资料 : 23版王道408数据结构书籍与课件