//堆排序的实现(最小堆)
public class HeapSort {
static int temp;
public static void shift(int r[],int k,int m){//筛选法调整堆
int i=k,j=k*2;
while(j<=m){
if(j<m&&r[j]<r[j+1]) j++;
if(r[i]<r[j]){
temp = r[i];
r[i] = r[j];
r[j] = temp;
i=j;j=i*2;
}else{
break;
}
}
}
public static void heapSort(int r[],int m){//m为数组长度,0为暂存单元
for(int i=m/2;i>=1;i--){//初始化
shift(r, i, m);
}
for(int i=1;i<m;i++){
temp=r[1];
r[1]=r[m-i+1];
r[m-i+1]=temp;
shift(r, 1, m-i);
}
}
public static void main(String[] args) {
int r[]={-1,36,30,18,40,32,45,22,50};
heapSort(r, 8);
for(int x : r){
System.out.print(x+" ");
}
}
}