Passa al tema normale
Discussioni su argomenti di Informatica

Regole del forum

Consulta il nostro regolamento e la guida per scrivere le formule
Rispondi al messaggio

Re: [Teoria] Max heap.

03/11/2021, 18:21

Naaaa, lo conosco il sanscrito :-D

Re: [Teoria] Max heap.

03/11/2021, 18:25

Non ti credo, però ho mentito - è vero - non è sanscrito! Questo tipo di parole entrano a far parte del tuo vocabolario quando vivi a stretto contatto con una comunità italofona che fa la stessa cosa tua che è inserita in un posto in cui non si parla italiano :wink:
Perché vedi queste cose in inglese e poi quando stai con gli amici mischi le due lingue.

Re: [Teoria] Max heap.

03/11/2021, 19:02

Il problema è che tu ne parli troppe :-D

Avendo lavorato a fianco di informatici per anni, ne avevo imparato parecchie ("mecciare" su tutte :D ) ma "codarlo" mi è del tutto nuovo :-k

Cordialmente, Alex

P.S.: Peraltro è vero, non conosco il sanscrito, vado a orecchio :lol:

Re: [Teoria] Max heap.

03/11/2021, 22:53

A me sembra tu ti stia solo complicando la vita. L'input è già un Max-Heap e l'output è solo un array dimensione \(k\). Estrarre il massimo da un Max-Heap richiede tempo \(\log(n)\) e facendolo \(k\) volte si ottengono tutti gli elementi che devi mettere nel tuo output in ordine inverso. Mi sembra qualcosa come il seguente dovrebbe funzionare:
Codice:
for (int i = 0; i < k; ++i) {
    B[k-i-1] = A[0];
    MaxHeapPop(A);
}

Re: [Teoria] Max heap.

04/11/2021, 12:48

Ma così la complessità è \( O(k \log n ) \) e mi dice che idealmente preferisce una complessita \( O(k \log k) \).

Re: [Teoria] Max heap.

04/11/2021, 22:09

Credo sia allora effettivamente necessario un max-heap di appoggio, mantenendo invariato \(A\). L'idea che avevi avuto mi sembra insomma quella corretta.
Rispondi al messaggio


Skuola.net News è una testata giornalistica iscritta al Registro degli Operatori della Comunicazione.
Registrazione: n° 20792 del 23/12/2010.
©2000— Skuola Network s.r.l. Tutti i diritti riservati. — P.I. 10404470014.