您的位置:首页 > 编程语言 > Java开发

java算法系列之一:堆排序算法

2015-09-13 15:11 501 查看
import java.util.Arrays;

public class HeapSort {

public static void main(String[] arg){

int a[]={45,12,65,89,78,1,23,54,35,76,99,10};
int arrayLength=a.length;
//循环建堆
for(int i=0;i<arrayLength-1;i++){
//建堆
buildMaxHeap(a,arrayLength-1-i);
//交换堆顶和最后一个元素
swap(a,0,arrayLength-1-i);
System.out.println(Arrays.toString(a));
}
}

public static void buildMaxHeap(int[] data,int lastIndex){
//从最后一个父节点开始运行
for(int i=(lastIndex-1)/2;i>=0;i--){
int k=i;
while(k*2+1<=lastIndex){
//左结点
int biggerIndex =2*k+1;
//
if(biggerIndex < lastIndex){
if(data[biggerIndex]<data[biggerIndex+1]){
biggerIndex ++;
}
}
if(data[k]<data[biggerIndex]){
swap(data,k,biggerIndex);
k=biggerIndex;
}else{
break;
}
}
}

}

public static void swap(int[] data, int k, int biggerIndex) {
// TODO Auto-generated method stub
int temp =data[k];
data[k] =data[biggerIndex];
data[biggerIndex] =temp;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息