堆排序算法伪代码
MAX_HEAPIFY(A,i)
l<——Left(i)
r<——Right(i)
if l<=length(A) and A[l]>A[i]
then largest<——l
if r<=length(A) and A[r]>A[largest]
then largest<——r
if largest!=i
then exchange A[i]<——> A[largest]//到这里完成了一层下降
MAX_HEAPIFY(A,largest)//这里是递归的让当前元素下降到最低位置
BUILD_MAX_HEAP(A):
heapsize[A]<——length[A]
for i<——length[A]/2+1 to 0
MAX_HEAPIFY(A,i)//堆排序的开始首先要构造大顶堆,这里就是对内层节点进行逐级下沉(小元素)
HEAP_SORT(A):
BUILD_MAX_HEAP(A)
for i<——length[A]-1 to 1//这里能够保证堆大小和数组大小的关系,堆在每一次置换后都减一
do exchangeA[1]<——> A[i]
length[A]<——length[A]-1
MAX_HEAPIFY(A,0,i-1)//对交换后的元素下沉
用堆排序算法对数组arr[10] = {8, 5, 10, 12, 7, 6, 15, 9, 11, 3}从小到大排序。