domanda sull'Heapsort: a parte il fatto che nel codice mancano gli swap, quello che non mi torna di più sono i vari "return;" Cosa dovrebbero "returnare"?
in effetti sul libro fa un pò di casino! in classe lo aveva spiegato meglio!
diciamo che quei "return" riportano il controllo alla fuzione principale "set_heap" nel caso in cui l'elemento in testa all'albero v[k] è maggiore dei suoi figli(sotto-elementi).
secondo me nella funzione set_heap dovrebbe esserci uno Swap fra l'elemento Massimo e l'ultimo valore del vettore per mantenere la condizione di heap, altrimenti il ciclo continua all'infinito; questo è provato dal fatto che se vale invece
v[k]<v[left(k)] per esempio si deve eseguire uno Swap fra i due valori, ma nel codice c'è la chiamata ricorsiva a propagate_heap.
