COMPACT_LIST_SEARCH简称为S,COMPACT_LIST_SEARCH'简称为S'
a、设COMPACT_LIST_SEARCH(以下简称S)和COMPACT_LIST_SEARCH'(以下简称S')循环中第t次j值为jt,S中While循环t次结束,可能情况为:
1.key[jt]=k,返回jt,在S'同样返回jt;
2、S中,key[jt]<k,i=next[jt],key[i]>=k,若key[i]>k,返回nil,若key[i]=k,返回next[jt];S'中,for循环结束时i=jt,while循环执行一次,i=next[jt],key[i]>=k,同S,若key[i]>k,返回nil,若key[i]=k.
b、S'的运行时间为t次for循环迭代次数,加上while循环次数(t次for循环迭代后i与k的距离),所以,T'=t+Xt
E(T')=t+E(Xt)=O(t+E(Xt))
c、
如图,k为第i小元素时(i=1,...,n),若t次循环后Xt=X,即下标位置距离k为x,那么须在t次选择中不选i-x+1到i的x个元素,概率为,在除前面的X个元素外剩余n-X元素中至少一次选择i-X,概率为[1-(1-1/(n-x))^t]
所以,Xt=X的概率为
由公式C.25,
得证。
d.
e、
f、S'期望运行时间
g、S'期望取最小时,等于S期望