Μια περιήγηση στους κορυφαίους 5 αλγόριθμους ταξινόμησης με τον κώδικα Python

Αλυσίδες αλγορίθμων ταξινόμησης '

Η ταξινόμηση είναι μια δεξιότητα που κάθε μηχανικός λογισμικού και προγραμματιστής χρειάζεται κάποια γνώση. Όχι μόνο να περάσει κωδικοποιητικές συνεντεύξεις αλλά ως γενική κατανόηση του προγραμματισμού. Οι διαφορετικοί αλγόριθμοι ταξινόμησης αποτελούν μια τέλεια εμφάνιση του τρόπου με τον οποίο ο σχεδιασμός του αλγορίθμου μπορεί να έχει τόσο ισχυρή επίδραση στην πολυπλοκότητα, την ταχύτητα και την αποδοτικότητα του προγράμματος.

Ας κάνουμε μια περιήγηση στους κορυφαίους 6 αλγόριθμους ταξινόμησης και να δούμε πώς μπορούμε να τις υλοποιήσουμε στην Python!

Ταξινόμηση φούσκα

Το είδος φυσαλίδων είναι αυτό που συνήθως διδάσκεται στις εισαγωγικές τάξεις CS, καθώς καταδεικνύει σαφώς πώς λειτουργεί το είδος, ενώ είναι απλό και κατανοητό. Το Bubble ταξινομεί τα βήματα μέσα από τη λίστα και συγκρίνει τα γειτονικά ζεύγη στοιχείων. Τα στοιχεία ανταλλάσσονται αν είναι σε λανθασμένη σειρά. Το πέρασμα μέσω του μη διατεταγμένου τμήματος της λίστας επαναλαμβάνεται μέχρις ότου ταξινομηθεί η λίστα. Επειδή το Bubble sort περνάει επανειλημμένα από το μη διαβαθμισμένο τμήμα της λίστας, έχει τη χειρότερη περίπτωση πολυπλοκότητας του O (n²).

Ταξινόμηση επιλογής

Το είδος επιλογής είναι επίσης αρκετά απλό αλλά συχνά ξεπερνάει την ποιότητα των φυσαλίδων. Εάν επιλέγετε μεταξύ των δύο, είναι καλύτερο να απλά προεπιλεγμένο δικαίωμα επιλογής. Με την επιλογή Selection, διαιρούμε τον κατάλογο εισαγωγής / συστοιχίας μας σε δύο μέρη: την υπο-λίστα στοιχείων που έχουν ήδη ταξινομηθεί και την υπο-λίστα των στοιχείων που απομένουν προς ταξινόμηση που αποτελούν την υπόλοιπη λίστα. Πρώτα βρούμε το μικρότερο στοιχείο στην αδιάθετη λίστα και τοποθετήστε το στο τέλος της ταξινομημένης υπο-λίστας. Συνεπώς, συνεχώς αρπάζουμε το μικρότερο κομμάτι χωρίς διαλογή και το τοποθετούμε με ταξινομημένη σειρά στην ταξινομημένη λίστα. Αυτή η διαδικασία συνεχίζεται επαναληπτικά έως ότου ολοκληρωθεί η ταξινόμηση της λίστας.

Ταξινόμηση εισαγωγής

Ο τύπος εισαγωγής είναι τόσο ταχύτερος όσο και πολύ πιο απλουστευτικός από το είδος και την επιλογή των φυσαλίδων. Αρκετά αστείο, είναι πόσοι άνθρωποι ταξινομούν τις κάρτες τους όταν παίζουν ένα παιχνίδι καρτών! Σε κάθε επανάληψη βρόχου, το είδος εισαγωγής αφαιρεί ένα στοιχείο από τη συστοιχία. Στη συνέχεια, βρίσκει τη θέση όπου αυτό το στοιχείο ανήκει σε ένα άλλο ταξινομημένο πίνακα και το εισάγει εκεί. Επαναλαμβάνει αυτή τη διαδικασία έως ότου δεν παραμείνουν στοιχεία εισόδου.

Συγχώνευση ταξινόμησης

Η συγχώνευση είναι ένα κομψό παράδειγμα ενός αλγορίθμου Divide and Conquer. Απλά χρησιμοποιεί τα 2 κύρια βήματα ενός τέτοιου αλγορίθμου:

(1) Διαχωρίζετε συνεχώς τη λίστα χωρίς διαλογή μέχρι να έχετε N sublists, όπου κάθε υπο-λίστα έχει 1 στοιχείο που είναι "unsorted" και N είναι ο αριθμός των στοιχείων στον αρχικό πίνακα.

(2) Συγχώνευση επανειλημμένα δηλαδή να κατακτά κανείς τους καταλόγους 2 κάθε φορά για να παράγει νέες ταξινομημένες υπο-λίστες, μέχρις ότου όλα τα στοιχεία έχουν συγχωνευθεί πλήρως σε μία μοναδική ταξινομημένη διάταξη.

Γρήγορη Ταξινόμηση

Η γρήγορη ταξινόμηση είναι επίσης ένας διαχωρισμός και αλγόριθμος κατάκτησης όπως το είδος συγχώνευσης. Αν και είναι λίγο πιο περίπλοκο, στις περισσότερες τυποποιημένες υλοποιήσεις εκτελεί σημαντικά ταχύτερα από ό, τι συγχωνεύει και σπάνια φθάνει στη χειρότερη περίπτωση πολυπλοκότητας του O (n²). Έχει 3 κύρια βήματα:

(1) Επιλέγουμε πρώτα ένα στοιχείο που θα ονομάσουμε τον άξονα από τον πίνακα.

(2) Μετακινήστε όλα τα στοιχεία που είναι μικρότερα από τον άξονα στα αριστερά του στροφέα. μετακινήστε όλα τα στοιχεία που είναι μεγαλύτερα από τον άξονα στα δεξιά του στροφέα. Αυτό ονομάζεται λειτουργία διαίρεσης.

(3) Εφαρμόστε αναδρομικά τα παραπάνω 2 βήματα χωριστά σε κάθε υποδιάταξη στοιχείων με μικρότερες και μεγαλύτερες τιμές από τον τελευταίο άξονα.

Θέλετε να μάθετε;

Ακολουθήστε με στο twitter όπου δημοσιεύω τα πάντα για την τελευταία και μεγαλύτερη AI, Τεχνολογία και Επιστήμη! Συνδεθείτε μαζί μου στο LinkedIn επίσης!

Συνιστώμενη ανάγνωση

Θέλετε να μάθετε περισσότερα σχετικά με την κωδικοποίηση στη Python; Το βιβλίο Python Crash Course είναι ο καλύτερος πόρος εκεί έξω για να μάθεις πώς να κωδικοποιήσεις στην Python!

Και μόνο ένα heads up, υποστηρίζω αυτό το blog με συνδέσμους θυγατρικών του Amazon σε σπουδαία βιβλία, επειδή μοιράζομαι σπουδαία βιβλία βοηθά όλους! Ως συνεργάτης του Amazon κερδίζω από τις αγορές που πληρούν τις προϋποθέσεις.