Algoritmi është një procedurë me hapa të njëpasnjëshem që merr disa të dhëna hyrëse (input) dhe prodhon disa vlera dalëse (output).Algoritmi është një sekuencë hapash që duke kryer përllogartje, shëndrrojnë inputin në output duke përdorur struktura të dhënash. Strukturat e të dhënave janë menyra sistematike të ruajtjes dhe organizimit të të dhënave (inpute, outpute te algoritmeve) të cilat i bëjnë të aksesueshme (vektore, lista).
Efiçenca e një algoritmi matet me shpejtësinë (sa kohe duhet për të prodhuar rezultatin) e ekzekutimit të algoritmit.Ka një grup problemesh per te cilat nuk egziston një zgjidhje efiçente, këto quhen probleme NP-komplete. Nëse zgjidhet njëri nga problemet NP-komplete, pra gjendet një algoritem efiçent, atëhere ekzistojnë algoritme efiçente për të gjitha problemet e tjera të kësaj klase. Kjo është një veti e veçantë dhe interesante e këtyre algoritmeve
Kriteret kryesore për vlerësimin e algoritmeve:
Korrektësia — algoritmi kryen saktësisht atë që duhet të bëjë, pra për çdo instancë të inputit, ai jep rezultatin korrekt të pritur. Nëse algoritmi jep rezultat të gabuar ose jep rezultat të saktë për një ose vetëm për disa nga instancat e inputit, atëherë ai nuk është korrekt. Një algoritem jo korrekt nuk vlen për zgjidhjen e problemit.
Efiçenca — algoritmi përdor në mënyrë efiçente burimet (memorjen, procesorin) të kompjuterit. Duam që algoritmat të ekzekutohen shpejt duke përdorur sa më pak memorje.
Thjeshtësia — thjeshtësia për ta kuptuar dhe implementuar një algoritëm.