QNA > P > Potete Dimostrare Che Il Merge Sort Ha Una Complessità Temporale [Math]O(N \Log N)[/Math]?

Potete dimostrare che il merge sort ha una complessità temporale [math]O(n \log n)[/math]?

Fase di divisione

Lasciamo che ci sia un array di n elementi ... merge sort, essendo una relazione di ricorsività di tipo divide et impera, tende a prendere l'array e a dividerlo in 2 sub array di uguale dimensione (cioè sub array contenenti n/2 elementi per un array di n elementi) ricorsivamente fino a quando i sub array contengono solo 1 elemento.

Questa procedura di divisione richiede quindi D(n)=2D(n/2) tempo---> n è diviso in 2 sub-array di n/2 elementi.

Fase di conquista

Nella fase di conquista i primi elementi di ogni sub-array sono confrontati tra loro e l'elemento più piccolo è messo come primo elemento dell'array padre. Poi il precedente secondo elemento di un array diventa il suo elemento primario e viene confrontato con il primo elemento del secondo array. Questo processo richiede n-1 confronti in tutto, poiché l'ultimo elemento non deve essere confrontato.

This conquer procedure, hence, takes C(n) = n-1

Divide and Conquer

In total divide and conquer, thus, takes T(n)= D(n) + C(n) => T(n) = 2T(n/2) + n-1 => T(n) = 2T(n/2) + O(n)

Akra-Bazzi solution to the recurrence relation:

T(n)=2T(n/2) + n is a divide and conquer relation

where a = 2; b = 1/2;

Hence,

Step 1: we set p such that a*(b)^p = 1 => 2*(1/2)^1 = 1

Step 2: Plug p = 1 and g(u)=g(n)=n in: T(n) = θ(n + n ∫(n/n*n)du)
=> T(n) = θ(n + n∫(1/n)du) => T(n) = θ(n + n(lg n))

=> T(n) = θ ( n lg n)

Q.E.D.

Di Eba

Quale dispositivo useresti tra iOS o Android e perché? :: Com'è la configurazione della fotocamera dello smartphone Motorola Moto G8 Power Lite?
Link utili