För att börja med, en algoritm är en väldefinierad sekvens av instruktioner avsedda att utföra en specifik uppgift. Inom programmering används algoritmer för att lösa ett problem genom att ta en input (i vissa fall kanske det inte finns någon input) och efter att ha utfört några specifika operationer, ger de en output. Algoritmer är överallt, från sökmotorns snabba svar på vår sökfråga till den vägen vi brukar använda för att komma från en punkt till en annan i vårt vardagliga liv.
För att en algoritm ska vara effektiv bör det vara två viktiga aspekter: korrektheten och effektiviteten. Korrekthet avser om algoritmen kan lösa problemet korrekt eller inte, medan effektiviteten mäter tidskomplexitet och rymdkomplexitet. Tidskomplexiteten innebär hur snabbt en algoritm kan lösa ett problem och rymdkomplexiteten beskriver den totala minnesplatsen som behövs av algoritmen.
Det är viktigt att förstå att det inte finns någon ”one size fits all” algoritm. Algoritmens val beror starkt på problemtypen, datamängden den behöver hantera och de specifika krav som ställs på effektivitet och rymdkomplexitet. Därför är design och analys av algoritmer en av de mest grundläggande aspekterna av datorvetenskap och programvara teknik.