U svom najosnovnijem obliku, algoritam je skup detaljnih detaljnih uputa za dovršavanje zadatka. Na primjer, algoritam za kuhanje kave u francuskom tisku bio bi:
- Ulijte vodu u čajnik, zatvorite poklopac i uključite ga.
- Skinite poklopac s francuske preše i ulijte 17 grama mljevene kave.
- Kad voda u kotlu zakipi, u francusku prešu ulijte 290 grama vruće vode.
- Vratite poklopac francuskog preša s podignutim klipom.
- Pričekajte 4 minute.
- Lagano pritisnite klip prema dolje dok ne dosegne dno.
- Ulijte kavu u šalicu.
U računalnoj znanosti uobičajeni algoritmi imaju nazive poput "Quicksort" i "Bogosort". Algoritmi se često grupiraju u različite kategorije poput algoritama pretraživanja, sortiranja i kompresije. Dalje, algoritmi se mogu opisati pristupom koji je potreban za izvršavanje zadatka, poput rekurzivnog, vraćanja unazad, dijeljenja i osvajanja, pohlepne i grube sile.
Algoritmi su često upareni sa strukturama podataka, premda se bitno razlikuju. Strukture podataka su metode za pohranu podataka tako da algoritam može lako izvoditi operacije na njima.
Neki uobičajeni primjeri struktura podataka su nizovi, hrpe, redovi, povezani popisi, stabla, grafikoni, hash tablice i hrpe.
Učinkovitost
Algoritmi se često procjenjuju i uspoređuju na temelju njihove učinkovitosti i resursa koji su im potrebni. Jedan od najčešćih načina procjene algoritma je promatranje njegove vremenske složenosti metodom koja se naziva Big O notation.
Oznaka Big O način je za opisivanje brzine ili složenosti algoritma i prikazuje najgori broj operacija za zadanu veličinu unosa. Važno je razumjeti moguće vrijeme izvođenja za različite algoritme, posebno kada radite s velikim ili rastućim skupovima podataka. Oznaka Big O olakšava odabir pravog algoritma za svaki zadatak.
Algoritmi sortiranja
Algoritmi sortiranja dolaze u raznim okusima, ovisno o vašoj potrebi. Neke, vrlo česte i široko korištene su:
Brzo sortiranje
Nijedna rasprava o sortiranju nije potpuna bez spominjanja brze sorte.
Spoji sortiranje
Algoritam spajanja sortiranja oslanja se na razdvajanje i razvrstavanje manjih nizova prije spajanja u jedan razvrstani niz.
Nastavni plan i program freeCodeCampa jako naglašava stvaranje algoritama. To je zato što su algoritmi učenja dobar način za vježbanje vještina programiranja. Ispitivači najčešće testiraju kandidate na algoritmima tijekom razgovora za posao programera.