【动手写排序】堆排序

来源:互联网 发布:ubuntu xorg 安装 编辑:程序博客网 时间:2024/05/18 11:49
public class HeapSort {
public void sort(int[] arr){
for(int i=arr.length-1;i>0;i--){
for(int j=(i+1)/2-1;j>=0;j--){
createHeap(arr,j,i);
}

swap(arr,i,0);
}
}

public void createHeap(int[] arr,int j,int i){
int k=j+1;
int index;
if((2*k-1)>i)
return;
if(2*k<i){
index= arr[2*k-1]>arr[2*k]?2*k-1:2*k;
}else{
index=2*k-1;
}
if(arr[j]<arr[index]){
swap(arr,j,index);
createHeap(arr,index,i);
}
}

public void swap(int[] arr,int i,int j){
int t=arr[i];
arr[i]=arr[j];
arr[j]=t;
}

@Test
public void test(){
int[] arr={9,8};
sort(arr);
for(int i:arr){
System.out.print(i+" ");
}
}
}
0 0