实现堆排序需要理解两个问题:
如何由一个无序序列建成一个堆。
如何在输出堆顶元素之后,调整其余元素成为一个新堆。
筛选是由无序序列建成一个大顶堆或者小顶堆的过程,从堆顶到叶子,它是一个反复的过程,为了方便我们从【n/2】开始,跟孩子相比较建成你想要的堆。
而第二个问题就是真正的由无序变成有序的过程了,输出堆顶之后把最后一个拿上来和左右孩子相比较重新建立新堆,也是一个反复的过程。
该键值序列对应的完全二叉树中最后一个分支结点。
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题