void MaxHeapify(int i){
        int l = Left(i);
        int r = Right(i);
        int largest;
        if (l > 0 && l <= this.HeapSize && this.Heap.get(l) > this.Heap.get(i) ) {
            largest = l;
        }
        else {
            largest = i;
        }
        if (r > 0 && r <= this.HeapSize && this.Heap.get(r) > this.Heap.get(largest)) {
            largest = r;
        }
        if (largest != i) {
            int temp = this.Heap.get(i);
            this.Heap.set(i, this.Heap.get(largest));
            this.Heap.set(largest, temp);
            MaxHeapify(largest);
        }
    }