Laskentalajittelu (Counting sort) on eräs lajittelualgoritmeista. Se perustuu jakauman laskemiseen. Ajatuksena on, että aineiston järjestäminen voidaan suorittaa tehokkaasti, jos alkioiden keskinäistä vertailua ei tarvitse tehdä aina kokonaisilla alkioilla.
Algoritmin aikakompleksisuus on lineaarinen eli . Se on stabiili, mutta ei toimi minimitilassa. Algoritmin kompleksisuudesta käytetään yleisesti myös muotoa , missä tarkoittaa järjesteltävien alkioiden määrää ja alkioiden mahdollisten arvojen lukumäärää. Usein lasketaan dynaamisesti alkioiden maksimi ja minimiarvojen erotuksena avulla.
Koska n-suuruisen syötteen järjestäminen kokonaisia alkioita vertaamalla vaatii pahimmassa tapauksessa Ω(n log n) vertailua, on laskentalajittelu varsin tehokas menetelmä, kunhan oletettu on tarpeeksi pieni. Tarkemmin sanottuna, kun .
Laskentalajittelu tarvitsee väliaikaistaulukkoa. Näin ollen laskentalajittelu ei ole minimitila-algoritmi (vaatii ylimääräistä tilaa).
Laskentalajittelun periaate on seuraava:
Edellä oleva periaate soveltuu tapauksiin, joissa avainavaruus on pienempi kuin lajiteltavien alkioiden määrä. Ts. menetelmästä tulee käyttökelvoton, jos mahdollisia avaimia on enemmän kuin lajiteltavia avaimia, koska apuvektorin koko kasvaa valtavaksi. Tästä syystä yleisessä tapauksessa em. menetelmää sovelletaan järjestämällä aineisto samalla periaatteella useampaan kertaan eri avaimen osien suhteen: ensin vähiten merkitsevien avaimen osien suhteen edeten kohti eniten merkitseviä avaimen osia. Koska menetelmä on stabiili, säilyttävät vähiten merkitsevien osien mukaan järjestetyt osat järjestyksensä. Näin aineisto voidaan järjestää "paloittain".