package 递归
;
public class 最小堆
{
public static void main(String
[] args
) {
int[] arr
={10,9,11,8,7,13,2,1,12};
MinHeap(arr
);
for (int i
: arr
) {
System
.out
.print(i
);
System
.out
.print(" ");
}
}
private static void MinHeap(int[] A
) {
int n
= A
.length
;
for (int i
= n
/ 2 - 1; i
>= 0; i
--) {
MinHeapFixDown(A
, i
, n
);
}
}
private static void MinHeapFixDown(int[] A
, int tip
, int n
) {
int left
= 2 * tip
+ 1;
int right
= 2 * tip
+ 2;
if (left
>= n
) {
return;
}
int min
= left
;
if (right
>= n
) {
} else if (A
[right
] < A
[left
]) {
min
= right
;
}
if (A
[tip
] > A
[min
]) {
int temp
= A
[tip
];
A
[tip
] = A
[min
];
A
[min
] = temp
;
} else {
return;
}
MinHeapFixDown(A
, min
, n
);
}
}
转载请注明原文地址: https://lol.8miu.com/read-5704.html