public static void main(String[] args) {
int[] a = {1,3,2,4,9,123,10,9};
createHeap(a);
System.out.println(Arrays.toString(a));
for(int i=a.length-1;i>=0;i--){
int tmp = a[i];
a[i] = a[0];
a[0] = tmp;
sort(a,0,i);
}
System.out.println(Arrays.toString(a));
}
static void createHeap(int[] a){
int len = a.length/2-1;
for(int i=len;i>=0;i--){
sort(a,i,a.length);
}
}
static void sort(int[] a,int i,int len){
int root = a[i];
for(int j = 2*i+1;j<len;j=2*j+1){
if(j<len-1&&a[j+1]>a[j])
j++;
if(a[j]<=root){
break;
}
a[i] = a[j];
i = j;
}
a[i] = root;
}
java 堆排序
最新推荐文章于 2023-04-24 11:37:55 发布