经典算法的平均复杂度分析

经典算法的平均复杂度分析

  • 改进的冒泡排序
  • Quick Sort
  • 闭哈希查找
    • 失败查找
    • 成功查找
  • 开哈希表查找

改进的冒泡排序

由于没有改变相邻逆序对互换的本质,数组内平均有 n 2 n^2 n2的逆序对就决定了算法必然复杂度为 O ( n 2 ) \Omicron(n^2) O(n2)

Quick Sort

排好序的序列为Z[1:N],则认定指标随机变量如下:

X i j = I { Z i 与 Z j 在 Q S 的 过 程 中 发 生 了 比 较 } X_{ij}=I\{Z_{i}与Z_{j}在QS的过程中发生了比较\} Xij=I{ZiZjQS}

设算法时间复杂度为 T ( n ) T(n) T(n),则有:
T ( n ) = E [ ∑ i < j X i j ] = ∑ i < j E [ X i j ] = ∑ i < j P R { Z i 与 Z j 比 较 的 概 率 } \begin{aligned} T(n) = & E[\sum_{i<j} X_{ij}] \\ = & \sum_{i<j} E[X_{ij}] \\ = & \sum_{i<j} PR\{Z_{i}与Z_{j}比较的概率\} \end{aligned} T(n)===E[i<jXij]i<jE[Xij]i<jPR{ZiZj}
Z i 与 Z j Z_{i}与Z_{j} ZiZj会不会进行比较需要看算法是如何进行的,在QS中即是看pivot如何选:

  1. 若pivot选择 [ Z 1 , Z i ) ⋃ ( Z j , Z n ] , 则 对 它 们 比 不 比 较 没 有 影 响 [Z_{1},Z_{i})\bigcup(Z_{j},Z_{n}],则对它们比不比较没有影响 [Z1,Zi)(Zj,Zn],
  2. 若pivot选择 Z i 和 Z j Z_{i}和Z_{j} ZiZj则它们必会比较
  3. 若pivot选择 ( Z i 和 Z j ) (Z_{i}和Z_{j}) (ZiZj)则它们必不会比较

将不影响结果的区间去除,那么 Z i 与 Z j Z_{i}与Z_{j} ZiZj进行比较的概率即是 2 j − i + 1 \frac{2}{j-i+1} ji+12
于是结果即是:
∑ i < j 2 j − i + 1 ∈ O ( n l o g n ) \begin{aligned} \sum_{i<j} \frac{2}{j-i+1}\in \Omicron(nlogn) \end{aligned} i<jji+12O(nlogn)

闭哈希查找

失败查找

设哈希表大小为m,内有n个元素

因为失败查找一定会将链长全部走完,因此若记 n m = α \frac{n}{m}=\alpha mn=α(平均链长)则有:
T ( n ) ∈ Θ ( 1 + α ) \begin{aligned} T(n)\in \Theta(1+\alpha) \end{aligned} T(n)Θ(1+α)

成功查找

设哈希表大小为m,内有n个元素,将表内元素按入表顺序排序,排好的序列记为Z[1:n],算法的时间复杂度为T(n),则有:
T ( n ) = 1 n ∗ ∑ i = 1 n ( 1 + ∑ j = i + 1 n 1 m ) = 1 + 1 n ∗ ∑ i = 1 n n − i m = 1 + 1 n m ∗ ∑ i = 1 n ( n − i ) ∈    Θ ( 1 + n 2 n m ) ∈    Θ ( 1 + n m ) \begin{aligned} T(n)=&\frac1n *\sum_{i=1}^n (1+\sum_{j=i+1}^n\frac1m)\\ =&1+\frac1n*\sum_{i=1}^n\frac{n-i}{m}\\ =&1+\frac{1}{nm}*\sum_{i=1}^n (n-i)\\ \in\;&\Theta (1+\frac{n^2}{nm})\\ \in\;&\Theta (1+\frac{n}{m}) \end{aligned} T(n)===n1i=1n(1+j=i+1nm1)1+n1i=1nmni1+nm1i=1n(ni)Θ(1+nmn2)Θ(1+mn)
若记 n m = α \frac{n}{m}=\alpha mn=α则有:
T ( n ) ∈ Θ ( 1 + α ) \begin{aligned} T(n)\in \Theta(1+\alpha) \end{aligned} T(n)Θ(1+α)

开哈希表查找

有点过于复杂…懒得写出来了,大概意思与闭hash差不多,平均查找长度的求解涉及太多了,全是gay论

你可能感兴趣的:(算法,平均复杂度分析)