要为升序排序和降序排序构建哪个堆。 请解释是否有任何堆(最大或最小)可用于任何排序(升序或降序)。
答案 0 :(得分:5)
通常,您将使用max-heap进行升序排序,使用min-heap进行降序排序。
这与通常描述堆排序算法的方式有关:
您可以在下图中看到该算法:(由Gms创建)
正如你在每一步中看到的那样,我们在数组的末尾放置了最大值(第一个最大数字,然后是第二个数字......),它们最终被排序。
但显然你也可以使用max-heap来生成降序排序。只需将找到的最大值放入一个新数组即可。 (或者只是在最后反转排序的数组。)