La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Soluzione 6: Algoritmo Quicksort 56984274371 1 2 3 4 5 6 7 8 9 10 11 12 50 Si basa sulla partizione dell’array rispetto ad un suo elemento scelto come.

Presentazioni simili


Presentazione sul tema: "Soluzione 6: Algoritmo Quicksort 56984274371 1 2 3 4 5 6 7 8 9 10 11 12 50 Si basa sulla partizione dell’array rispetto ad un suo elemento scelto come."— Transcript della presentazione:

1 Soluzione 6: Algoritmo Quicksort Si basa sulla partizione dell’array rispetto ad un suo elemento scelto come “pivot”. L’operazione viene quindi ripetuta sulle due parti così ottenute. i j 69 j 009 ijj 84 i 64 j 2 i 92 jj 74 i 84 j 3 i 63 jj 71 i 91 j 75

2 Quicksort(A,p,r) if p < r q = Partition(A,p,r) Quicksort(A,p,q-1) Quicksort(A,q+1,r) 1 p rn A q 1 p rn A non ordinati 1 p rn A q 1 p rn A q 1 p rn A ordinati

3 Partition(A,p,r) x = A[r] i = p -1 for j = p to r -1 if A[j] < x i = i+1 scambia A[i] e A[j] scambia A[i+1] e A[r] return i+1 1 p rn A 1pr n A i x 1pr n A i x j 1pr n A i x 1pr n A i x

4 Quicksort (A,p,r) // Complessità massima if p < r q = Partition(A,p,r) Quicksort(A,p,q-1) Quicksort(A,q+1,r) Array ordinato o ordinato in senso inverso

5 Quicksort(A,p,r) // Complessità minima if p < r // q = Partition(A,p,r) // Quicksort(A,p,q-1) // Quicksort(A,q+1,r) //

6 Quicksort (A,p,r) // Complessità media if p < r then q = Partition(A,p,r) Quicksort(A,p,q-1) Quicksort(A,q+1,r)

7 Per n > 1 Per n = 2 e dunque Per n > 2 e moltiplicando per n otteniamo

8 dividendo per n(n+1) ponendo otteniamo

9 la cui soluzione è

10 Infine Quindi

11 La complessità media O(n log n) di Quick-Sort vale soltanto se tutte le permutazioni dell’array in ingresso sono ugualmente probabili. In molte applicazioni pratiche questo non è vero!!! Vi sono applicazioni in cui le permutazioni quasi ordinate sono molto più probabili e questo può aumentare la complessità media fino ad O(n 2 ).

12 Randomized-Partition(A,p,r) i = Random(p,r) scambia A[i] e A[r] return Partition(A,p,r) Randomized-Quicksort(A,p,r) if p < r then q = Randomized-Partition(A,p,r) Randomized-Quicksort(A,p,q-1) Randomized-Quicksort(A,q+1,r)


Scaricare ppt "Soluzione 6: Algoritmo Quicksort 56984274371 1 2 3 4 5 6 7 8 9 10 11 12 50 Si basa sulla partizione dell’array rispetto ad un suo elemento scelto come."

Presentazioni simili


Annunci Google