【数据结构(c++语言版)】第一章 绪论

01 第一章 绪论

1. 算法的复杂度表示

1.1 表示记号

  • O(n) 表示最坏的情况
  • Ω(n) 表示最好的情况
  • Θ(n) 介于最好和坏情况之间的复杂度

1.2 复杂度衡量标准

  • 按执行程序的语句数量进行计算
  • 计算复杂度的时候,常数可以忽略,低阶的复杂度可以忽略,比如 5n2+7n+1,等价于n2所以复杂度就是O(n2)

2. 级数的复杂度估计

2.1 算术级数

  算术级数复杂度等价于末项的平方,例如:
1 + 2 + 3 + . . . . + n = n ( n + 1 ) 2 = O ( n 2 ) 1+2+3+....+n = \frac{n(n+1)}{2}=O(n^2) 1+2+3+....+n=2n(n+1)=O(n2)

2.2 幂方级数

   幂方级数复杂度等级末项复杂度+1,例如
1 2 + 2 2 + 3 2 + 4 2 + . . . . . + n 2 = O ( n 3 ) 1^2+2^2+3^2+4^2+.....+n^2=O(n^3) 12+22+32+42+.....+n2=O(n3)

2.3 等比数列级数

  与末项同阶
a 1 q 2 + . . . . . + a 1 q n = a 1 ∗ ( 1 − q n ) 1 − q = O ( q n ) a1q^2+.....+a1q^n=\frac{a1*(1-q^n)}{1-q}=O(q^n) a1q2+.....+a1qn=1qa1(1qn)=O(qn)

2.4调和级数

  调和级数对数复杂度。
1 1 + 1 2 + 1 3 + . . . . . + 1 n = O ( l o g n ) \frac{1}{1}+\frac{1}{2}+\frac{1}{3}+.....+\frac{1}{n}=O(logn) 11+21+31+.....+n1=O(logn)

  记忆的时候可以理解为积分
1 1 + 1 2 + 1 3 + . . . . . + 1 n = ∫ 1 n 1 x   d x = l n ( n ) \frac{1}{1}+\frac{1}{2}+\frac{1}{3}+.....+\frac{1}{n}=\int_{1}^{n}\frac{1}{x}\, dx=ln(n) 11+21+31+.....+n1=1nx1dx=ln(n)

2.5 log和

  复杂度为O(nlogn)
l o g 1 + l o g 2 + . . . . . + l o g n = l o g n ! = O ( n l o g n ) log{1}+log{2}+.....+log{n}=log{n!}=O(nlog{n}) log1+log2+.....+logn=logn!=O(nlogn)

3. 递归分析法

3.1 递归跟踪

   使用方块的方法展开递归。递归式划掉,然后计算有多少语句

3.2 递归方程

  比较两次递归直接语句的差别,然后使用代数的方法进行求解,比如
T ( n ) = T ( n − 1 ) + O ( 1 ) T(n)=T(n-1)+O(1) T(n)=T(n1)+O(1)

T ( 1 ) = O ( 1 ) T(1)=O(1) T(1)=O(1)
  可得
T ( n ) = O ( n ) ; T(n) =O(n); T(n)=O(n);

©️2020 CSDN 皮肤主题: 鲸 设计师:meimeiellie 返回首页