In questo caso fa creare un albero binario quasi completo e nella radice è sempre presente il massimo valore.
L'albero è rappresentato da un array con indici 0..N-1 dove N è il numero di elementi. Padre(i)=trunc((i-1/2). FiglioSinistro(i)=2*i+1. FiglioDestro(i)=2*i+2. Foglie:dall’indicetrunc(N/2) all’indice N-1. Dev'esser fatta un operazione chiamata Heapify: fondamentale che permette di creare uno Heap a partire da una nuova radice e due Heap che rappresentano i due sottoalberi del nuovo Heap. Dato un indice i dell'array si assume che FiglioSinistro(i) e FIglioDestro(i) siano indici che nell'array sono radici di sottoalberi che rispettano la proprietà dell'heap.
Una volta eseguita il nodo in posizione i è radice di uno heap corretto. La procedura ha complessità O(log2N) nel caso pessimo.
Le altre operazioni sono:
-Restituzione del massimo, complessità O(1);
-Estrazione del massimo: complessità O(log2N), in quanto bisogna richiamare Heapify(0) dopo aver copiato in posizione 0 l'elemento in posizione N-1 e dopo aver eliminato quest'ultimo dall'array.
Per inserire un nuovo elemento nello heap si posiziona il nuovo valore in fondo all'array (la foglia viene confrontata con il padre e scambiata con esso se maggiore). Il procedimento continua fino a quando non si trova che il padre corrente del nodo è maggiore di esso.