import java.util.*;
class Main {
public static void main(String[] args) {
int[] nums = {2, 9, 7, 6, 5, 8};
Heap heap = new Heap(nums);
for (Integer i: heap.getHeap()){
System.out.println(i);
}
System.out.println("Hello world! - java.jsrun.net ");
}
}
class Heap{
List<Integer> heap;
int size;
public Heap(int[] nums){
nums = newNums(nums);
for(int i = 1; i <= nums.length / 2; i++){
int left = i * 2;
int right = left + 1;
int maxIndex = -1;
if (right < nums.length){
maxIndex = nums[left] > nums[right]? left:right;
}else{
maxIndex = left;
}
if(nums[maxIndex] > nums[i]){
int temp = nums[maxIndex];
nums[maxIndex] = nums[i];
nums[i] = temp;
}
}
this.size = nums.length - 1;
this.heap = new ArrayList<>();
for (int i = 1; i < nums.length; i++){
this.heap.add(nums[i]);
}
}
public int[] newNums(int[] nums){
int[] newNums = new int[nums.length + 1];
for (int i = 0; i < nums.length; i++){
newNums[i + 1] = nums[i];
}
return newNums;
}
public int[] getHeap(){
int[] nums = new int[size];
for(int i = 0; i < size; i++){
nums[i] = heap.get(i);
}
return nums;
}
}