Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
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. 9 9 6 4 6 9 2 8 8 4 4 3 6 4 1 2 9 2 7 5 7 4 8 4 3 3 6 7 7 1 1 9 5 7 5 i j i i j i i j j i i j j j j j j j
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 r n A non ordinati 1 p r n A q 1 p r n A q 1 p r n A q 1 p r n 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 r n A 1 p r n A i x 1 p r n A i x j 1 p r n A i x 1 p r n A i x
4
Array ordinato o ordinato in senso inverso
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 e moltiplicando per n otteniamo Per n = 2 Per n > 2 e dunque
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(n2).
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)
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.