kri*_*ray 1 sorting heapsort
要为升序排序和降序排序构建哪个堆.请解释是否可以将任何堆(最大值或最小值)用于任何排序(升序或降序).
Jak*_*ube 6
通常,您将使用max-heap进行升序排序,使用min-heap进行降序排序.
这与通常描述堆排序算法的方式有关:
您可以在下图中看到该算法的工作原理:(由Gms创建)
正如你在每一步中看到的那样,我们在数组的末尾放置了最大值(第一个是最大的数字,然后是第二个最大的数字,......),它们最终被排序.
但显然你也可以使用max-heap来生成降序排序.只需将找到的最大值放入一个新数组即可.(或者只是在最后反转排序的数组.)
归档时间:
9 年,5 月 前
查看次数:
7837 次
最近记录: