堆排序可以分为两个阶段:
用下沉操作由N个元素构造堆只需少于2N次比较以及少于N次交换。
将N个元素排序,堆排序只需少于(2NlgN+2N)次比较以及一半次数的交换。2N来字堆的构造。
堆排序的特点:
堆排序实现要点:
public static void sort(Comparable[] a){
int N = a.length;
for(int k=N/2;k>=1;k--)//构造堆
sink(a,k,N);//由上至下的堆有序化(下沉)的实现
while(N>1){
exch(a,1,N--);//交换
sink(a,1,N);//修复堆
}
}