Δομζσ Δεδομζνων Αναηιτθςθ και Ταξινόμθςθ Διάλεξθ 3
Περιεχόμενα Αλγόρικμοι αναηιτθςθσ Σειριακι αναηιτθςθ Αναηιτθςθ κατά ομάδεσ Δυαδικι Αναηιτθςθ Ταξινόμθςθ Ταξινόμθςθ με παρεμβολι (insertion sort) Ταξινόμθςθ με επιλογι (selection sort) Ταξινόμθςθ με αντιμετάκεςθ (bubble sort) Ταξινόμθςθ με διαμεριςμό (quick sort)
Αναηιτθςθ κατά ομάδεσ Μια εναλλακτικι τεχνικι τθσ ςειριακισ αναηιτθςθσ είναι θ αναηιτθςθ κατά ομάδεσ. Εφαρμόηεται ςε ταξινομθμζνο πίνακα Ο πίνακασ χωρίηεται ςε ομάδεσ και εξετάηεται το τελευταίο ςτοιχείο κάκε ομάδασ. Αν το ςτοιχείο αυτό είναι μεγαλφτερο από εκείνο που αναηθτείται, γίνεται ςειριακι αναηιτθςθ ςτα ςτοιχεία τθσ ομάδασ Αλλιϊσ ςυνεχίηεται θ ίδια διαδικαςία με τθν επόμενθ ομάδα
Αναηιτθςθ κατά ομάδεσ - Αλγόρικμοσ Δεδομζνα // Ε[],N,K// q=sqrt(n) /* αρικμόσ ομάδων (βζλτιςτοσ) */ i=q+1 j=n index =0 /*ζυρεςθ ομάδασ*/ Όςο i N επανάλαβε Αν K Ε[i] τότε j=i+1 i=n+1 αλλιώσ i=q+i Αν i>n τότε i=n Τζλοσ_αν Τζλοσ_αν Τζλοσ_επανάληψησ /* Εφρεςθ ςτοιχείου */ Για i από j-q μζχρι j με_βήμα 1 Αν K = Ε[i] τότε index = i Τζλοσ_αν Τζλοσ_επανάληψησ Αποτελζςματα // index// Τζλοσ Block-Search
Δυαδικι Αναηιτθςθ Απαιτεί τα ςτοιχεία του πίνακα να είναι ταξινομθμζνα Κάκε ζλεγχοσ ςτον πίνακα ι βρίςκει το ηθτοφμενο ςτοιχείο ι περιορίηει ςτο μιςό το πλικοσ των ςτοιχείων μζςα ςτα οποία βρίςκεται αυτό που ψάχνουμε. Δομ. Δεδομ. - Διάλεξθ 2
Δυαδικι Αναηιτθςθ Αλγόριθμοσ Binary-Search Δεδομζνα // Ε[],N,K // L=1,U=N,ex=false,index=0 Όςο L U και ex == false επανάλαβε i= (L+U)/2 Αν K == Ε[i] τότε ex = true index = i αλλιώσ_αν K < Ε[i] τότε U = i-1 αλλιώσ L = i+1 Τζλοσ_αν Τζλοσ_επανάληψησ Αποτελζςματα // ex,index// Τζλοσ Binary - Search Δομ. Δεδομ. - Διάλεξθ 2
Σφνοψθ αλγορίκμων αναηιτθςθσ Αλγόριθμοσ Ταξινομημζνοσ πίνακασ Απόδοςη Αλγορίθμου Σειριακι Αναηιτθςθ ΟΧΙ N/2 για επιτυχι αναηιτθςθ, Ν για ανεπιτυχι αναηιτθςθ Αναηιτθςθ Κατά Ομάδεσ ΝΑΙ Ν/(2Q) + Q/2, όπου Q το πλικοσ των ςτοιχείων ςε κάκε ομάδα Δυαδικι Αναηιτθςθ ΝΑΙ log N + 1 για ανεπιτυχι αναηιτθςθ, log N για επιτυχι αναηιτθςθ
Ταξινόμθςθ Ταξινόμηση είναι θ τοποκζτθςθ ενόσ ςυνόλου ςτοιχείων ςε μια ιδιαίτερθ ςειρά, είτε άυξουςα είτε φκίνουςα Σκοπόσ τθσ ταξινόμθςθσ είναι θ διευκόλυνςθ τθσ αναηιτθςθσ δεδομζνων μζςα ςε ζνα ςφνολο από αυτά Στθν κακθμερινι ηωι ταξινόμθςθ ζχουμε ςτουσ τθλεφωνικοφσ καταλογουσ, λεξικά, πίνακεσ περιεχομζνων κτλ
Ταξινόμθςθ με παρεμβολι Χωρίηει τα ςτοιχεία ςε τρια μζρθ: Το ςτοιχείο που εξετάηεται Τθν ακολουκία προοριςμοφ (ταξινομθμζνα ςτοιχεία) Υπόλοιπα ςτοιχεία ι ςτοιχεία ειςόδου Για κάκε ςτοιχείο που εξετάηεται βρίςκεται θ ςωςτι κζςθ ςτθν ακολουκία προοριςμοφ και τοποκετείται εκεί μετακινϊντασ τα μεγαλφτερα ςτοιχεία κατά μια κζςθ
Ταξινόμθςθ με παρεμβολι 5 7 0 3 4 2 6 1 5 7 0 3 4 2 6 1 0 5 7 3 4 2 6 1 0 3 5 7 4 2 6 1 0 3 4 5 7 2 6 1 0 2 3 4 5 7 6 1 0 2 3 4 5 6 7 1 0 1 2 3 4 5 6 7
Ταξινόμθςθ με παρεμβολι - Αλγόριθμοσ Insertion-Sort Δεδομζνα // A[],N// Για j από 2 μζχρι N με_βήμα 1 i = j - 1 temp = A[j] επανάλαβε Αν temp A[i] break Τζλοσ_αν A[i+1]=A[i] i = i-1 Μζχρισ_ότου i 0 A[i+1] = temp Τζλοσ_επανάληψησ Αποτελζςματα // A// Τζλοσ Insertion-Sort Αλγόρικμοσ
Ταξινόμθςθ με επιλογι Η μζκοδοσ βαςίηεται ςε τρία βιματα: 1. Επιλογι του ςτοιχείου με τθν ελάχιςτθ τιμι από τθν ακολουκία ειςόδου 2. Ανταλλαγι του με το πρϊτο ςτοιχείο τθσ ακολουκίασ ειςόδου 3. Επανάλθψθ των βθμάτων 1 και 2 με τα υπόλοιπα ςτοιχεία
Ταξινόμθςθ με επιλογι 44 55 12 42 94 18 06 67 06 55 12 42 94 18 44 67 06 12 55 42 94 18 44 67 06 12 18 42 94 55 44 67 06 12 18 42 94 55 44 67 06 12 18 42 44 55 94 67 06 12 18 42 44 55 94 67 06 12 18 42 94 55 67 94
Ταξινόμθςθ με επιλογι - Αλγόρικμοσ Αλγόριθμοσ Selection-Sort Δεδομζνα // A[],N // Για i από 1 μζχρι N με_βήμα 1 x = A[i] k = i Για j από i μζχρι N με_βήμα 1 Αν A[j]<x τότε k = j x = A[j] Τζλοσ_αν Τζλοσ_επανάληψησ Αντιμετάθεςε A[i],A[k] Τζλοσ_επανάληψησ Αποτελζςματα // A // Τζλοσ Selection-Sort
Ταξινόμθςθ με αντιμετάκεςθ Αρχίηουμε με το τελευταίο ςτοιχείο και το ςυγκρίνουμε με το προθγοφμενο Αν είναι μικρότερο αντιμετακζτουμε τα δφο ςτοιχεία Συνεχίηουμε ςυγκρίνοντασ το προτελευταίο με το προθγοφμενο του κ.ο.κ. Η διαδικαςία τερματίηεται όταν φτάςουμε ςε κάποιο ςτοιχείο όπου όλα τα προθγοφμενα του είναι ταξινομθμζνα. Όλεσ οι παραπάνω ενζργειεσ επαναλαμβάνονται τόςεσ φορζσ όςα και τα ςτοιχεία. Η μεκοδοσ λζγεται και ταξινόμηση φυσαλίδας (bubblesort)
Ταξινόμθςθ με αντιμετάκεςθ Αλγόριθμοσ Bubble-Sort Δεδομζνα // A[],N// Για i από 2 μζχρι N με_βήμα 1 Για j από N μζχρι i με_βήμα -1 Αν A[j-1]>A[j] τότε Αντιμετάθεςε A[j],A[j-1] Τζλοσ_αν Τζλοσ_επανάληψησ Τζλοσ_επανάληψησ Αποτελζςματα // A// Τζλοσ Bubble-Sort
Ταξινόμθςθ με αντιμετάκεςθ 44 55 12 42 94 18 6 67 6 44 55 12 42 94 18 67 6 12 44 55 18 42 94 67 6 12 18 44 55 42 67 94 6 12 18 42 44 55 67 94 6 12 18 42 44 55 67 94 6 12 18 42 44 55 67 94 6 12 18 42 44 55 67 94