- 问题描述
写出PROTO-vEB-DELETE的伪代码。通过扫描簇内的相关位,来更新相应的summary位。并且你实现的伪代码的最坏情况运行时间是多少? - 问题求解
PROTO-vEB-DELETE(V,x)
注:删除V中的x
if V.u == 2
V.A[x]=0
else PROTO-vEB-DELETE(V.cluster[high(x)],low(x))
isEmpty = true
for i=high(x)*sqrt(u) to (high(x)+1)*sqrt(u)-1
if PROTO-vEB-MEMBER(V.cluster[high(x)],i)
isEmpty = false
break
if isEmpty
PROTO-vEB-DELETE(V.summary,high(x))
在最坏情况下需要两次PROTO-vEB-DELETE操作和
u√
次扫描簇内的相关位,每次扫描都花费
O(lglgu)
时间。因此我们得到花费时间的递推式
T(u)=2T(u√)+O(u√lglgu)
用主定理求得 T(u)=O(u√lglgu) 。