取走堆顶之后拿什么补上
取走堆顶之后,为了保持形状规整,要【0】。
开始练习 →
下沉时和哪个孩子换
下沉的时候,要和【0】交换。
开始练习 →
和较小的那个换会怎样
下沉时如果和较小的孩子交换,后果是【0】。
开始练习 →
弹一次之后新的堆顶是几
堆是 24、23、15、13、17。运行下面这段程序: def sift_down(h, i, n): while True: big = i l = 2 * i + 1 r = 2
开始练习 →
弹一次之后还剩几个
同一个堆。运行下面这段程序: def sift_down(h, i, n): while True: big = i l = 2 * i + 1 r = 2 * i + 2
开始练习 →
写下沉
补全 sift_down:让下标 i 上的元素一路往下沉到该去的位置。 把堆顶换成 17 再沉一次,输出新的堆顶。
开始练习 →
写弹出
补全 pop:取走堆顶、拿末尾补上、再下沉,返回取走的那个。 补全后输出弹出来的值。
开始练习 →
连弹两次,第二次弹出谁
同一个 pop。连着弹两次,输出第二次弹出来的值。
开始练习 →
从一个乱序数组建堆,怎么做最快
把一个无序数组整理成堆,最快的做法是【0】。
开始练习 →
为什么要从后往前
建堆必须从后往前做,因为【0】。
开始练习 →