Algoritmer forklaret - hvad de er og almindelige sorteringsalgoritmer

I sin mest basale form er en algoritme et sæt detaljerede trin-for-trin instruktioner for at fuldføre en opgave. For eksempel vil en algoritme til at lave kaffe i en fransk presse være:

  1. Hæld vand i kedlen, luk låget, og tænd det.
  2. Tag låget af den franske presse, og hæld 17 gram malet kaffe i.
  3. Når vandet i kedlen koger, hæld 290 gram varmt vand i den franske presse.
  4. Sæt låget på den franske presse på igen med stemplet op.
  5. Vent 4 minutter.
  6. Tryk forsigtigt stemplet ned, indtil det når bunden.
  7. Hæld kaffe i et krus.

I datalogi har almindelige algoritmer navne som "Quicksort" og "Bogosort". Algoritmer er ofte grupperet i forskellige kategorier som søgnings-, sorterings- og komprimeringsalgoritmer. Desuden kan algoritmer beskrives ved den tilgang, det tager for at fuldføre en opgave, såsom rekursiv, backtracking, opdeling og erobring, grådig og brutal kraft.

Algoritmer er ofte parret med datastrukturer, selvom de er fundamentalt forskellige. Datastrukturer er metoder til lagring af data, så en algoritme let kan udføre operationer på den.

Nogle almindelige eksempler på datastrukturer er arrays, stakke, køer, sammenkædede lister, træer, grafer, hash-tabeller og dynger.

Effektivitet

Algoritmer vurderes ofte og sammenlignes ud fra deres effektivitet og de ressourcer, de har brug for. En af de mest almindelige måder at evaluere en algoritme er at se på dens tidskompleksitet gennem en metode kaldet Big O-notation.

Big O-notation er en måde at beskrive hastigheden eller kompleksiteten af ​​en algoritme på og viser det værste tilfælde antal operationer for en given inputstørrelse. Det er vigtigt at forstå den mulige driftstid for forskellige algoritmer, især når man arbejder med store eller voksende datasæt. Big O-notation gør det lettere at vælge den rigtige algoritme til hver opgave.

Sorteringsalgoritmer

Sorteringsalgoritmer findes i forskellige varianter afhængigt af din nødvendighed. Nogle, meget almindelige og meget anvendte, er:

Hurtig sortering

Ingen sorteringsdiskussion er komplet uden at nævne Hurtig sortering.

Flet sortering

Flettsorteringsalgoritmen er afhængig af opdeling og sortering af mindre arrays, før de flettes i et sorteret array.

freeCodeCamp's læseplan lægger stærkt vægt på at skabe algoritmer. Dette skyldes, at indlæringsalgoritmer er en god måde at øve programmeringsfærdigheder på. Interviewere tester oftest kandidater på algoritmer under udviklerjobsinterviews.