Come funziona?
Lezione 3 di 9 del corso Heap Sort - Serie DSA di Coddy.
Un heap binario risiede in un normale array. Per il nodo all'indice i (con indice base 0), i figli si trovano agli indici 2*i + 1 e 2*i + 2. Questo sistema di indicizzazione è il trucco che permette a un albero di risiedere in un array.
Procedimento passo passo:
- Costruisci un max-heap: riordina l'array in modo che ogni genitore sia >= dei suoi figli. Il valore più grande finisce all'indice 0.
- Estrai il massimo: scambia la radice (il valore più grande) con l'ultimo elemento dell'heap, poi riduci l'heap di uno, così il valore più grande rimane parcheggiato alla fine, nella sua posizione definitiva nell'array ordinato.
- Ripara con sift-down: la nuova radice potrebbe trovarsi nella posizione sbagliata, quindi falla scendere (scambiala con il figlio più grande e ripeti) finché la proprietà dell'heap non viene ripristinata.
- Ripeti finché l'heap non è vuoto. L'array è ora ordinato in ordine crescente.
Esempio su [4, 10, 3, 5, 1]:
- Costruisci un max-heap: [10, 5, 3, 4, 1].
- Sposta 10 alla fine scambiandolo con la radice e fallo scendere, poi ripeti per 5, 4, 3.
- Risultato: [1, 3, 4, 5, 10].
Provalo tu
Questa lezione non include una sfida di codice.
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Heap Sort - Serie DSA
2L'algoritmo
Come funziona?PseudocodiceImplementazione (Parte 1)Implementazione (Parte 2)Esercitati da solo: Compilatore C online