import java.util.Arrays;
class Main {
static class Heap {
int[] arrays;
public Heap(int[] arrays) {
this.arrays = arrays;
}
public void arrange(int[] arrays, int length) {
int mid = (length - 1) / 2;
if (mid == 0)
return;
int loop = 0;
int i = mid;
while (loop != 2) {
int l = arrays[i * 2];
int r = i * 2 + 1 < length - 1 ? arrays[i * 2 + 1] : -1;
int index = r > l ? 1 : 0;
if (arrays[i] < arrays[i * 2 + index]) {
int m = arrays[i];
arrays[i] = arrays[i * 2 + index];
arrays[i * 2 + index] = m;
}
if (loop == 0)
i--;
else if (loop == 1)
i++;
if (i == 0 || i == mid + 1) {
loop++;
i = 1;
}
}
}
public void sort(Heap heap) {
int[] arrays = heap.arrays;
for (int i = arrays.length - 1; i > 0; i--) {
int mid = arrays[i];
arrays[i] = arrays[1];
arrays[1] = mid;
heap.arrange(arrays, i);
}
}
@Override
public String toString() {
return Arrays.toString(arrays);
}
}
public static void main(String[] args) {
int[] arrs = {0, 2, 9, 7, 6, 5, 8};
Heap heap = new Heap(arrs);
heap.arrange(heap.arrays, heap.arrays.length);
heap.sort(heap);
System.out.println(heap);
}
}