【算法笔记】算法的平均时间复杂度A(n)的公式及示例

2019-03-24  本文已影响0人  w8ed

算法平均时间复杂度计算公式

A(n) = \sum\limits_{I\in S}P_I t_I
其中:


举例:检索问题,数组Ln个元素,每个元素为从1到n的整数。若待检索元素在L中(例如1,2,3,4,5),则比较次数为其本身。若待检索元素位于L的空隙中(例如0.5,1.5,2.5),则比较次数为n,也就是从头到尾比较一遍。若位于L和位于L的空隙的待检索元素数量各占一半,检索的平均时间复杂度是多少?

位于L的情况:假设xL的概率为P,则x在每个位置的概率为\frac{P}{n},若x的值为i,则需要比较i次。平均时间复杂度为\sum\limits_{i=1}^{n} i\frac{P}{n}

位于L的空隙的情况:x不在L的概率为1-P,每种情况都要比较n次,则该情况的平均时间复杂度为(1-P)n

综上,结合等差数列求和公式有:
\begin{aligned} A(n)&=\sum\limits_{i=1}^{n} i\frac{P}{n}+(1-P)n \\ &=\frac{(1+n)P}{2}+ (1-P)n\\ \end{aligned}

P = \frac{1}{2}
A(n)=\frac{1+n}{4}+\frac{n}{2}\approx \frac{3n}{4}

上一篇 下一篇

猜你喜欢

热点阅读