Αρχική ΑΕΠΠ - Δομές Δεδομένων Λειτουργικά Συστήματα Δίκτυα Υπολογιστών ΙΙ Βάσεις Δεδομένων Παιδαγωγικά - Διδακτική
Μεταβλητή - Έκφραση Δομή Ακολουθίας Δομή Επιλογής Δομή Επανάληψης
Μονοδιάστατοι Δισδιάστατοι Πολυδιάστατοι Αναζήτηση Ταξινόμηση Στοίβα Ουρά
Συναρτήσεις Διαδικασίες Σχετικά με τις παράμετρους
Η ταξινόμηση αυτή πραγματοποιείται με τα παρακάτω βήματα:
Στον παρακάτω πίνακα φαίνεται πως λειτουργεί ο αλγόριθμος. Με μαύρο φόντο είναι τα στοιχεία του πίνακα που αλλάζουν θέση και με γκρι είναι το ταξινομημένο τμήμα του πίνακα. Παρατηρήστε ότι για i=4
, το 42
είναι το μικρότερο από όλα τα στοιχεία που βρίσκονται δεξιά του, έτσι δεν έχουμε ανταλλαγή στοιχείων. Το ίδιο ισχύει για i=6
.
Για κάθε i
θεωρούμε την τιμή Α[i]
ως την μικρότερη. Ο εσωτερικός βρόχος ελέγχει αν πράγματι η τιμή αυτή είναι μικρότερη, εξετάζοντας τα στοιχεία Α[(i+1)..n]
. Ο βρόχος αυτός τερματίζει πάντα γιατί φτάνει στο n
. Αν βρέθηκε μικρότερο στοιχείο, έστω Α[k]
τότε αυτό μεταφέρεται στη θέση Α[i]
, έτσι ο πίνακας Α[1..i]
είναι ταξινομημένος.
Ο εξωτερικός βρόχος τερματίζει όταν i=n-1
οπότε και ελέγχονται τα δύο τελευταία στοιχεία του πίνακα Α[n-1]
και A[n]
, και τοποθετείται το μικρότερο στη θέση Α[n-1]
και το μεγαλύτερο στην A[n]
.
Άρα, όταν τελειώσει και ο εξωτερικός βρόχος, όλα τα στοιχεία του πίνακα είναι ταξινομημένα σε αύξουσα σειρά.
Ο αλγόριθμος έχει δύο βρόχους εμφολιασμένους. Ο εσωτερικός βρόχος for
εκτελείται κάθε για κάθε i
και συγκεκριμένα n-1
φορές για i=1
, n-2
για i=2
και μία φορά για i=n-1
, συνολικά n(n-1)/2
φορές.
Ο βρόχος for
εκτελείται n φορές.
Ο συνολικός χρόνος για τον αλγόριθμο είναι:
Ο μεγαλύτερος όρος είναι ο n2, άρα ο αλγόριθμος είναι τετραγωνικής πολυπλοκότητας Ο(n2).
Ο αλγόριθμος ευθείας παρεμβολής, όταν τα στοιχεία του πίνακα είναι ήδη ταξινομημένα, ο εσωτερικός βρόχος while
δεν εκτελείται με αποτέλεσμα η χρονική πολυπλοκότητά του να είναι γραμμική Ο(n).
Στον αλγόριθμος ευθείας επιλογής, όταν τα στοιχεία του πίνακα είναι ήδη ταξινομημένα, ο εσωτερικός βρόχος for
εκτελείται πάντα, με αποτέλεσμα η χρονική πολυπλοκότητά του να είναι πάντα τετραγωνική Ο(n2).
Ο αλγόριθμος χρησιμοποιεί έναν πίνακα με n
στοιχεία και τέσσερις μεταβλητές, την i
, την j
, την pos
και την min
. Αυτές οι μεταβλητές καταλαμβάνουν από μία θέση μνήμης η κάθε μία. Οπότε, συνολικά η θέσεις μνήμης που χρησιμοποιεί ο αλγόριθμος είναι:
S(n)=n+4
Η χωρική πολυπλοκότητα καθορίζεται από τον μεγαλύτερο όρο της εξίσωσης ο οποίος είναι ο n, δηλαδή, ο αλγόριθμος έχει γραμμική χωρική πολυπλοκότητα O(n).
Copyright 2008 - Άρης Φεργάδης