En rundvisning i top 5 sorteringsalgoritmer med Python-kode

Sortering af algoritmer kompleksiteter '

Sortering er en færdighed, som enhver softwareingeniør og -udvikler har brug for noget kendskab til. Ikke kun for at bestå kodende interviews, men som en generel forståelse af selve programmeringen. De forskellige sorteringsalgoritmer er et perfekt udstillingsvindue for, hvordan algoritmedesign kan have en så stærk effekt på programkompleksitet, hastighed og effektivitet.

Lad os tage en rundvisning i de 6 øverste sorteringsalgoritmer og se, hvordan vi kan implementere dem i Python!

Bubble Sort

Bobelsortering er den, der normalt undervises i indledende CS-klasser, da den tydeligt viser, hvordan sortering fungerer, mens den er enkel og let at forstå. Bubblesorter trin gennem listen og sammenligner tilstødende par af elementer. Elementerne udskiftes, hvis de er i forkert rækkefølge. Passet gennem den usorterede del af listen gentages, indtil listen er sorteret. Da Bubble sort gentagne gange passerer gennem den usorterede del af listen, har den en worst case-kompleksitet på O (n²).

Valgssortering

Valgssortering er også ganske enkel, men overgår ofte boblesortering. Hvis du vælger mellem de to, er det bedst at bare vælge ret til valg af sortering. Ved valg af sortering deler vi vores inputliste / array i to dele: sublisten over de emner, der allerede er sorteret, og sublisten over de poster, der er tilbage til at blive sorteret, der udgør resten af ​​listen. Vi finder først det mindste element i den usorterede sublist og placerer det i slutningen af ​​den sorterede sublist. Således griber vi kontinuerligt det mindste usorterede element og placerer det i sorteret rækkefølge i den sorterede underliste. Denne proces fortsætter iterativt, indtil listen er fuldt sorteret.

Indsættelsessortering

Indsættelsessortering er både hurtigere og veludviklet mere forenklet end både bobelsortering og udvælgelsessortering. Sjovt nok er det, hvor mange mennesker sorterer deres kort, når de spiller et kortspil! På hver loop-iteration fjerner indsættelsessort et element fra matrixen. Derefter finder den det sted, hvor dette element hører til i en anden sorteret matrix og indsætter det der. Den gentager denne proces, indtil der ikke er nogen inputelementer tilbage.

Flet sortering

Merge sort er et perfekt elegant eksempel på en Divide and Conquer-algoritme. Den bruger simpelthen de to vigtigste trin i en sådan algoritme:

(1) Del kontinuerligt den usorterede liste, indtil du har N-underlister, hvor hver underliste har 1 element, der er "usorteret", og N er antallet af elementer i den originale matrix.

(2) Gentag gentagne gange, dvs. erobre sublisterne sammen 2 ad gangen for at producere nye sorterede sublister, indtil alle elementer er fuldt ud sammenføjet i et enkelt sorteret array.

Hurtig sortering

Hurtig sortering er også en skillelinje og erobre algoritme som sammenfletningssortering. Selvom det er en smule mere kompliceret, fungerer det i de fleste standardimplementeringer markant hurtigere end sammenfletningssortering og når sjældent sit værste tilfælde kompleksitet O (n²). Det har 3 hovedtrin:

(1) Vi vælger først et element, som vi vil kalde pivotten fra matrixen.

(2) Flyt alle elementer, der er mindre end pivoten til venstre for pivotten; flyt alle elementer, der er større end pivoten til højre for pivotten. Dette kaldes partitionsoperationen.

(3) Brug de ovennævnte 2 trin rekursivt separat på hver af undergrupperne med elementer med mindre og større værdier end den sidste pivot.

Kan du lide at lære?

Følg mig på twitter, hvor jeg poster alt om den nyeste og største AI, teknologi og videnskab! Opret forbindelse med mig også på LinkedIn!

Anbefalet læsning

Vil du lære mere om kodning i Python? Python Crash Course-bogen er den bedste ressource derude til at lære at kode i Python!

Og bare en heads-up, jeg støtter denne blog med Amazon-tilknyttede links til gode bøger, fordi at dele gode bøger hjælper alle! Som Amazon-associeret tjener jeg på kvalificerende køb.