二分查找的平均查找长度
对二分查找的平均查找长度进行简单分析。
向作出假设:要查找的元素在数组内,数组长度为 n n n. 约定对长度为 n n n 的数组,平均查找长度为随机变量 C n C_n Cn,随机变量 I n I_n In 定义如下
I n = { 1 要 查 找 的 关 键 字 是 这 个 长 度 为 n 的 数 组 的 中 间 的 关 键 字 0 o t h e r w i s e , I_n=\left\{ \begin{matrix} 1 & 要查找的关键字是这个长度为 n 的数组的中间的关键字\\ 0 & \mathrm{otherwise} \end{matrix} \right., In={10要查找的关键字是这个长度为n的数组的中间的关键字otherwise,
那么
C n = I n + ( 1 − I n ) ( C n / 2 + 1 ) , C_n=I_n+(1-I_n)(C_{n/2}+1), Cn=In+(1−In)(Cn/2+1),
取其期望值
E ( C n ) = 1 n + ( 1 − 1 n ) E ( C n / 2 + 1 ) < 1 n + 1 + E ( C n / 2 ) , E(C_n)=\frac1n+\left(1-\frac1n\right)E(C_{n/2}+1)<\frac1n+1+E(C_{n/2}), E(Cn)=n1+(1−n1)E(Cn/2+1)<n1+1+E(Cn/2),
展开
E ( C n ) = 1 + ⋯ + 2 ⌊ log n ⌋ n + ⌊ log n ⌋ + c = Θ ( log n ) . E(C_n)=\frac{1+\cdots+2^{\lfloor\log{n}\rfloor}}n+\lfloor\log{n}\rfloor+c=\Theta(\log {n}). E(Cn)=n1+⋯+2⌊logn⌋+⌊logn⌋+c=Θ(logn).
简单分析,还有很多不完备的地方。