Professional Documents
Culture Documents
3 Sets
3 Sets
Οι διαφάνειες είναι βασισμένες στο βιβλίο "Data Structures and Algorithms in C++" των Michael T. Goodrich, Roberto Tamassia και David M. Mount
Sets 1
Αποθηκεύοντας ένα σύνολο σε
μια λίστα
Μπορούμε να υλοποιήσουμε ένα σύνολο με μια λίστα
Τα στοιχεία τοποθετούνται ταξινομημένα σύμφωνα με
μια κανονική διάταξη
Ο χώρος που χρησιμοποιείται είναι O(n)
Κόμβοι στους οποίους αποθηκεύονται στοιχεία του συνόλου
ταξινομημένα
Λίστα
Sets 2
Γενικευμένη Συνένωση
(§10.2)
Γενικευμένη αλγόριθμος genericMerge(A, B)
συνένωση 2 S άδεια ακολουθία
ταξινομημένων while A.isEmpty() B.isEmpty()
λιστών A και B a A.first().element(); b
Πρότυπη μέθοδος B.first().element()
genericMerge if a < b
Βοηθητικές aIsLess(a, S); A.remove(A.first())
μέθοδοι else if b < a
aIsLess bIsLess(b, S); B.remove(B.first())
bIsLess else { b = a }
bothEqual bothEqual(a, b, S)
Τρέχει σε χρόνο A.remove(A.first()); B.remove(B.first())
O(nAnB) while A.isEmpty()
δεδομένου ότι οι aIsLess(a, S); A.remove(A.first())
βοηθητικές while B.isEmpty()
μέθοδοι τρέχουν
σε χρόνο O(1) bIsLess(b, S); B.remove(B.first())
return S
Sets 3
Χρησιμοποιώντας Γενικευμένη
Συνένωση για Πράξεις Συνόλων
Sets 5