const swap = ( arr, i, j ) => { const tmp = arr[ i] ; arr[ i] = arr[ j] ; arr[ j] = tmp;
}
const heapInsert = ( arr , i ) => { while ( arr[ i] > arr[ Math. floor ( ( i - 1 ) / 2 ] ) { swap ( arr, i, Math. floor ( ( i - 1 ) / 2 ) ; i = Math. floor ( ( i - 1 ) / 2 ; }
}
const heapBigGenerate = arr => { for ( let i = 0 ; i < arr. length; i++ ) { headInsert ( arr, i) ; } return arr;
}
const getHeapMax = arr => { return arr[ 0 ] ;
}
const headify = ( arr, idx, heapSize ) => { let left = idx * 2 + 1 ; while ( left < heapSize) { const right = left + 1 ; let largest = left; if ( right < heapSize && arr[ right] > arr[ left] ) largest = right; if ( arr[ idx] > arr[ largest] ) largest = idx; if ( idx === largest) break ; swap ( arr, idx, largest) ; idx = largest; left = idx * 2 + 1 ; }
} ;