堆排序是指利用堆这种数据结构所涉及的一种排序算法。最大堆通常被用来进行”升序”排序,而最小堆通常被用来进行”降序”排序。
最小堆进行降序的基本思想:
1. 初始化堆:将数据构造成最小堆。
2. 交换数据:将a[0] (最小值)和a[n-1]进行交换,并重新调整最小堆。每次deleteMin都确定一个数的顺序。
时间复杂度:O($N\log{N}$)。
空间复杂度:O($1$)。
堆排序是不稳定的。它在交换数据的时候,是比较父结点和子节点之间的数据,所以,即便是存在两个数值相等的兄弟节点,它们的相对顺序在排序也可能发生变化。
|
|