Top Banner
Quick Sort θ το πρώτο στοιχείο (οδηγός) του πίνακα για ταξινόμηση Διαίρεση του πίνακα σε δύο ζώνες αρχή του πίνακα: στοιχεία ≤ θ τέλος του πίνακα: στοιχεία >θ θ στην οριστική του θέση Αναδρομική κλήση του αλγόριθμου σε κάθε μία από τις ζώνες όσο δεν είναι ελαττωμένες σε ένα στοιχείο
28

Quick Sort - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~vassilis/ac/10L11_QuickSort.pdfΕναλλακτικήλύσηδιαμέρισης...

Sep 08, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Quick Sort - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~vassilis/ac/10L11_QuickSort.pdfΕναλλακτικήλύσηδιαμέρισης Ηπροηγούμενηλύσηδενείναισυμμετρική

Quick Sort

θ το πρώτο στοιχείο (οδηγός) τουπίνακα για ταξινόμησηΔιαίρεση του πίνακα σε δύο ζώνες

αρχή του πίνακα: στοιχεία ≤ θτέλος του πίνακα: στοιχεία >θθ στην οριστική του θέση

Αναδρομική κλήση του αλγόριθμου σε κάθεμία από τις ζώνες όσο δεν είναι ελαττωμένεςσε ένα στοιχείο

Page 2: Quick Sort - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~vassilis/ac/10L11_QuickSort.pdfΕναλλακτικήλύσηδιαμέρισης Ηπροηγούμενηλύσηδενείναισυμμετρική

Παράδειγμα - Οριστική θέση οδηγού

a: 61 92 23 74 45 56 87

a: x x x 6 x x x

a: 23 74 45 56

a: 23 x x x

“Εύρεση της τελικής θέσης του οδηγού στην αρχή του αλγόριθμου”

Page 3: Quick Sort - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~vassilis/ac/10L11_QuickSort.pdfΕναλλακτικήλύσηδιαμέρισης Ηπροηγούμενηλύσηδενείναισυμμετρική

Quicksort: Οριστική θέση οδηγού θΈστω f (αριστερός δείκτης) και r (δεξιός δείκτης) Έστω δύο δείκτες i και m τέτοιοι ώστε για κάθε στιγμήέχουμε: aj θ, f < j ≤ m και aj > θ, m <j < i

?> θθθ

> θθθ

> θθθ

↑f

↑f

↑f

↑r

↑r

↑r

↑m

↑m

↑m

↑i

Page 4: Quick Sort - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~vassilis/ac/10L11_QuickSort.pdfΕναλλακτικήλύσηδιαμέρισης Ηπροηγούμενηλύσηδενείναισυμμετρική

Παράδειγμα - Οριστική θέση οδηγού

a: 61 92 23 74 45 56 87

↓↓

a: x x x 6 x x x

Page 5: Quick Sort - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~vassilis/ac/10L11_QuickSort.pdfΕναλλακτικήλύσηδιαμέρισης Ηπροηγούμενηλύσηδενείναισυμμετρική

Quicksort: Διαμέρισηa: 61 92 23 74 45 56 87 (1) a: 61 92 23 74 45 56 87 (2) a: 61 22 93 74 45 56 87 (3) a: 61 22 93 74 45 56 87 (4) a: 61 22 43 74 95 56 87 (5) a: 61 22 43 54 95 76 87 (6) a: 61 22 43 54 95 76 87

↓a: 5 2 4 6 9 7 8

Page 6: Quick Sort - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~vassilis/ac/10L11_QuickSort.pdfΕναλλακτικήλύσηδιαμέρισης Ηπροηγούμενηλύσηδενείναισυμμετρική

Quicksort:Διαμέριση

a: 5 2 4 (1) a: 5 2 4 (2) a: 5 2 4

↓a: 4 2 5

Page 7: Quick Sort - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~vassilis/ac/10L11_QuickSort.pdfΕναλλακτικήλύσηδιαμέρισης Ηπροηγούμενηλύσηδενείναισυμμετρική

Quicksort:Διαμέριση

a: 4 2a: 4 2

↓a: 2 4

Page 8: Quick Sort - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~vassilis/ac/10L11_QuickSort.pdfΕναλλακτικήλύσηδιαμέρισης Ηπροηγούμενηλύσηδενείναισυμμετρική

Αλγόριθμος PartitionPartition (A, f, r)

θ = a[f], m = ffor i = f+1 to r do

if a[i] θm = m+1swap (A[i], A[m])

end ifend forswap (A[f], A[m])return m /* οριστική θέση οδηγού θ */

****

Page 9: Quick Sort - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~vassilis/ac/10L11_QuickSort.pdfΕναλλακτικήλύσηδιαμέρισης Ηπροηγούμενηλύσηδενείναισυμμετρική

Quick Sort: αλγόριθμος

Quick Sort (Α, f, r)if f < r then

m=Partition (A, f, r)Quick Sort (A, f, m-1)Quick Sort (A, m+1 , r)

end if*****

Page 10: Quick Sort - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~vassilis/ac/10L11_QuickSort.pdfΕναλλακτικήλύσηδιαμέρισης Ηπροηγούμενηλύσηδενείναισυμμετρική

Quick Sort – αναδρομικό δέντρο

Παράδειγμα: 61 92 23 74 45 56 87

QS(1,7)

6644QS(1,3)

[61 92 23 74 45 56 87 ]

[5 2 4]5533

[4 2]QS(1,2)

4422QS(1,1)

[[22]][[2211]]

Page 11: Quick Sort - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~vassilis/ac/10L11_QuickSort.pdfΕναλλακτικήλύσηδιαμέρισης Ηπροηγούμενηλύσηδενείναισυμμετρική

Quick Sort – αναδρομικό δέντρο

Παράδειγμα: 61 92 23 74 45 56 87

QS(1,7)

6644QS(1,3)

[61 92 23 74 45 56 87 ]

[5 2 4]5533

[2 4]QS(1,2)

4422

QS(1,1)[2] QS(3,2) [ ]

21

Page 12: Quick Sort - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~vassilis/ac/10L11_QuickSort.pdfΕναλλακτικήλύσηδιαμέρισης Ηπροηγούμενηλύσηδενείναισυμμετρική

Quick Sort – αναδρομικό δέντρο

Παράδειγμα: 61 92 23 74 45 56 87

QS(1,7)

6644QS(1,3)

[61 92 23 74 45 56 87 ]

[5 2 4]5533

[2 4]QS(1,2)

4422

QS(1,1)[2] QS(3,2) [ ]

21

Page 13: Quick Sort - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~vassilis/ac/10L11_QuickSort.pdfΕναλλακτικήλύσηδιαμέρισης Ηπροηγούμενηλύσηδενείναισυμμετρική

Quick Sort – αναδρομικό δέντρο

Παράδειγμα: 61 92 23 74 45 56 87

QS(1,7)

6644QS(1,3)

[61 92 23 74 45 56 87]

[2 4 5]5533

[2 4]QS(1,2)

4422

QS(1,1)[2] QS(3,2) [ ]

21

QS(4,3) [ ]

Page 14: Quick Sort - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~vassilis/ac/10L11_QuickSort.pdfΕναλλακτικήλύσηδιαμέρισης Ηπροηγούμενηλύσηδενείναισυμμετρική

Quick Sort – αναδρομικό δέντρο

Παράδειγμα: 61 92 23 74 45 56 87

QS(1,7)

6644QS(1,3)

[21 42 53 64 95 76 87]

[2 4 5]5533

[2 4]QS(1,2)

4422

QS(1,1)[2] QS(3,2) [ ]

21

QS(4,3) [ ]

Page 15: Quick Sort - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~vassilis/ac/10L11_QuickSort.pdfΕναλλακτικήλύσηδιαμέρισης Ηπροηγούμενηλύσηδενείναισυμμετρική

Quick Sort – αναδρομικό δέντρο

Παράδειγμα: 61 92 23 74 45 56 87

QS(1,7)

6644QS(1,3) [2 4 5]

5533

[2 4]QS(1,2)

4422

QS(1,1)[2] QS(3,2) [ ]

21

QS(4,3) [ ]

QS(5,7) [9 7 8]

[21 42 53 64 95 76 87]

Page 16: Quick Sort - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~vassilis/ac/10L11_QuickSort.pdfΕναλλακτικήλύσηδιαμέρισης Ηπροηγούμενηλύσηδενείναισυμμετρική

Quick Sort – αναδρομικό δέντρο

Παράδειγμα: 61 92 23 74 45 56 87

QS(1,7)

6644QS(1,3) [2 4 5]

5533

[2 4]QS(1,2)

4422

QS(1,1)[2] QS(3,2) [ ]

21

QS(4,3) [ ]

QS(5,7) [9 7 8]

[21 42 53 64 95 76 87]

9977

QS(5,4)

[7 8]QS(5,6)

7755

[ ]

Page 17: Quick Sort - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~vassilis/ac/10L11_QuickSort.pdfΕναλλακτικήλύσηδιαμέρισης Ηπροηγούμενηλύσηδενείναισυμμετρική

Quick Sort – αναδρομικό δέντρο

Παράδειγμα: 61 92 23 74 45 56 87

QS(1,7)

6644QS(1,3) [2 4 5]

5533

[2 4]QS(1,2)

4422

QS(1,1)[2] QS(3,2) [ ]

21

QS(4,3) [ ]

QS(5,7) [9 7 8]

[21 42 53 64 95 76 87]

9977

QS(5,4)

[7 8]QS(5,6)

7755

[ ] QS(6,6) [8]

Page 18: Quick Sort - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~vassilis/ac/10L11_QuickSort.pdfΕναλλακτικήλύσηδιαμέρισης Ηπροηγούμενηλύσηδενείναισυμμετρική

Quick Sort – αναδρομικό δέντρο

Παράδειγμα: 61 92 23 74 45 56 87

QS(1,7)

6644QS(1,3) [2 4 5]

5533

[2 4]QS(1,2)

4422

QS(1,1)[2] QS(3,2) [ ]

21

QS(4,3) [ ]

QS(5,7) [9 7 8]

[21 42 53 64 95 76 87]

9977

QS(5,4)

[7 8]QS(5,6)

7755

[ ] QS(6,6) [8]

Page 19: Quick Sort - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~vassilis/ac/10L11_QuickSort.pdfΕναλλακτικήλύσηδιαμέρισης Ηπροηγούμενηλύσηδενείναισυμμετρική

Quick Sort – αναδρομικό δέντρο

Παράδειγμα: 61 92 23 74 45 56 87

QS(1,7)

6644QS(1,3) [2 4 5]

5533

[2 4]QS(1,2)

4422

QS(1,1)[2] QS(3,2) [ ]

21

QS(4,3) [ ]

QS(5,7) [7 8 9]

[21 42 53 64 95 76 87]

9977

QS(5,4)

[7 8]QS(5,6)

7755

[ ] QS(6,6) [8]

QS(8,7) [ ]

Page 20: Quick Sort - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~vassilis/ac/10L11_QuickSort.pdfΕναλλακτικήλύσηδιαμέρισης Ηπροηγούμενηλύσηδενείναισυμμετρική

Quick Sort – αναδρομικό δέντρο

Παράδειγμα: 61 92 23 74 45 56 87

QS(1,7)

6644QS(1,3) [2 4 5]

5533

[2 4]QS(1,2)

4422

QS(1,1)[2] QS(3,2) [ ]

21

QS(4,3) [ ]

QS(5,7) [7 8 9]

[21 42 53 64 95 76 87]

9977

QS(5,4)

[7 8]QS(5,6)

7755

[ ] QS(6,6) [8]

QS(8,7) [ ]

Page 21: Quick Sort - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~vassilis/ac/10L11_QuickSort.pdfΕναλλακτικήλύσηδιαμέρισης Ηπροηγούμενηλύσηδενείναισυμμετρική

Quick Sort – αναδρομικό δέντρο

Παράδειγμα: 61 92 23 74 45 56 87

QS(1,7)

6644QS(1,3) [2 4 5]

5533

[2 4]QS(1,2)

4422

QS(1,1)[2] QS(3,2) [ ]

21

QS(4,3) [ ]

QS(5,7) [7 8 9]

[21 42 53 64 75 86 97]

9977

QS(5,4)

[7 8]QS(5,6)

7755

[ ] QS(6,6) [8]

QS(8,7) [ ]

86

Page 22: Quick Sort - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~vassilis/ac/10L11_QuickSort.pdfΕναλλακτικήλύσηδιαμέρισης Ηπροηγούμενηλύσηδενείναισυμμετρική

Quick Sort - worst case

Παράδειγμα: 21 92 173 244 325 406 587

QS(1,7)

(1,0)

2211

(2,7)

(3,2)

(2,1)(3,7)

Page 23: Quick Sort - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~vassilis/ac/10L11_QuickSort.pdfΕναλλακτικήλύσηδιαμέρισης Ηπροηγούμενηλύσηδενείναισυμμετρική

Πολυπλοκότητα Quick Sort1. Χείριστη περίπτωση

αύξουσες ή φθίνουσες ακολουθίες αριθμών“διαμερίσεις εκφυλισμένες”

n-1+Tn-1 αν n>1 Tn =

1 διαφορετικά

Επομένως Ο(n2)

Page 24: Quick Sort - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~vassilis/ac/10L11_QuickSort.pdfΕναλλακτικήλύσηδιαμέρισης Ηπροηγούμενηλύσηδενείναισυμμετρική

Πολυπλοκότητα Quick Sort

2. Κατά μέσο όροΌλες οι θέσεις για την οριστική θέση του στοιχείου θ είναιισοπίθανες c=

Έχουμε Tn = n-1+ ∑(Tk-1+ Tn-k)

και λόγω συμμετρίας Tn = n-1+ ∑ Tk-1

Τελικά Tn = Ο(nlogn)

11nn

11nn

22nn

k=1k=1

k=1k=1

nn

nn

Page 25: Quick Sort - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~vassilis/ac/10L11_QuickSort.pdfΕναλλακτικήλύσηδιαμέρισης Ηπροηγούμενηλύσηδενείναισυμμετρική

Μέση πολυπλοκότητα Quick Sort

TT00==ΤΤ11=0, =0, n>1 n>1

ΤΤnn=n+1+ =n+1+ ∑∑(T(Tkk--11+T+Tnn--kk) ) καικαι λόγωλόγω συμμετρίαςσυμμετρίας

ΤΤnn=n+1+ =n+1+ ∑∑ TTkk--11 →→ nTnTnn=n=n22+n+2+n+2∑∑ TTkk--1122nn

11nn

k=1k=1

k=1k=1

k=1k=1

nnnn

nn

Page 26: Quick Sort - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~vassilis/ac/10L11_QuickSort.pdfΕναλλακτικήλύσηδιαμέρισης Ηπροηγούμενηλύσηδενείναισυμμετρική

ΓιαΓια nn--1 1 έχουμεέχουμε::

TTnn--11=n+ =n+ ∑∑ TTkk--11 →→ (n(n--1)T1)Tnn--11=n=n22--n+2 n+2 ∑∑ TTkk--11

ΑφαιρώνταςΑφαιρώντας κατάκατά μέλημέλη,, έχουμεέχουμε μετάμετά τηντην απλοποίησηαπλοποίηση::

nnΤΤnn=(n+1)T=(n+1)Tnn--11+2n+2n

22nn--11 k=1 k=1

n-1n-1

Μέση πολυπλοκότητα Quick Sort

Page 27: Quick Sort - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~vassilis/ac/10L11_QuickSort.pdfΕναλλακτικήλύσηδιαμέρισης Ηπροηγούμενηλύσηδενείναισυμμετρική

Διαιρώντας με n(n+1) έχουμε:

= + = + ∑

Προσεγγίζοντας:

≈ 2 ∑ ≈ 2 ∫ dx = 2ln(n)

Τελικά: Tn≈ 1,38nlogn

TTnnn+1n+1

TTnn--11nn

22n+1n+1

CC2233

22k+1k+1

k=3

n

TTnnn+1n+1

11kk

11xxk=1

n

1

n

Μέση πολυπλοκότητα Quick Sort

Page 28: Quick Sort - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~vassilis/ac/10L11_QuickSort.pdfΕναλλακτικήλύσηδιαμέρισης Ηπροηγούμενηλύσηδενείναισυμμετρική

Εναλλακτική λύση διαμέρισης

Η προηγούμενη λύση δεν είναι συμμετρική

Μια άλλη παρουσίαση του Quick Sort συνίσταται στονα εντοπίσουμε την τελική θέση του θ με δύο δείκτεςπου ξεκινούν από το 1 και το n και οι οποίοισυγκλίνουν προς την τελική θέση του θ.

Χρησιμοποίηση “φρουρών” στα αριστερά και στα δεξιά τουπίνακα. Μπορούμε να θέσουμε ένα μικρότερο στοιχείο από το θστα αριστερά και ένα μεγαλύτερο στα δεξιά.