Vantaggio dell'ordinamento unione a 2 vie contro n-way

1

È noto che l'ordinamento Merge a 2 vie richiede l'ora N * logN.

Mi chiedo, quale sarebbe il tempo di esecuzione se dividiamo un array della dimensione N in subarray N e poi facciamo la stessa cosa che faremmo per l'unione a 2 vie?

    
posta Alan Coromano 10.07.2013 - 12:59
fonte

1 risposta

3

Bene, la ricorrenza sarà:

dovef(n)èlafunzionediunione.

Naturalmentenell'ordinamentounionebidirezionalepossiamofarlointempolineare,quindif(n)=O(n)perilcasok=2.Ingenerale,tuttavia,ilmomentomigliorepossibileèO(nlogk),utilizzando Code prioritarie .

Ora, secondo il Teorema principale puoi risolvere questa ricorrenza e vedere che T(n)=O(n log n).

Quindi nella notazione asintotica sembra che sia il k-way sia l'ordinamento di fusione originale siano uguali. tuttavia, in pratica, l'implementazione dell'originale merge-sort è più semplice e potrebbe richiedere meno sforzo per l'implementazione e la manutenzione.

    
risposta data 10.07.2013 - 14:17
fonte

Leggi altre domande sui tag