参考: http://blog.csdn.net/chenjin_zhong/article/details/6045892
package sort;
import java.util.Arrays;
public class HeapSort {
public static void main(String[] args) {
int[] a = {7, 23, 78, 21, 23 ,34, 233,254};
buildHeap(a);
System.out.println(Arrays.toString(a));
sortHeap(a);
System.out.println(Arrays.toString(a));
}
private static void sortHeap(int[] a) {
// TODO Auto-generated method stub
for(int i = a.length - 1; i > 0; i--){
int tmp = a[i];
a[i] = a[0];
a[0] = tmp;
adjustHeap(a, 0, i - 1);
}
}
private static void buildHeap(int[] a) {
// TODO Auto-generated method stub
int len = a.length - 1;
for(int i = len / 2; i >= 0; i--){
adjustHeap(a, i, len);
}
}
private static void adjustHeap(int[] a, int i, int len) {
// TODO Auto-generated method stub
if(len == 0)
return;
int target = a[i];
for(int j = 2*i; j <= len; j*=2){
if(j < len && a[j + 1] > a[j])
j = j + 1;
if(target > a[j])
break;
a[i] = a[j];
i = j;
}
a[i] = target;
}
}