def sink(xs, ys, i, n, reverse=False):
cmp = operator.gt if reverse else operator.lt
lchild = 2 * i + 1
while lchild < n:
rchild = lchild + 1
if rchild < n and cmp(ys[rchild], ys[lchild]):
child = rchild
else:
child = lchild
if not cmp(ys[child], ys[i]):
break
xs[child], xs[i] = xs[i], xs[child]
ys[child], ys[i] = ys[i], ys[child]
i, lchild = child, 2 * child + 1
评论列表
文章目录