private void bubbleDown(int pos) {
        int firstChildPos = 2*pos + 1;
        int secondChildPos = 2*pos + 2;

        int greaterChildPos = firstChildPos;
        if(firstChildPos <= heapLen - 1) {
            if(secondChildPos <= heapLen - 1) {
                if(array[firstChildPos] < array[secondChildPos]) greaterChildPos = secondChildPos;
            }

            if(array[greaterChildPos] > array[pos]) {
                swap(greaterChildPos, pos);
                bubbleDown(greaterChildPos);
            }
        }
    }