Хабр Курсы для всех
РЕКЛАМА
Большая витрина: от крупнейших школ до частных авторов. Сравнивайте по цене, длительности, формату и выбирайте самый подходящий курс!
for (i = 1, max = a[0]; i < len; i++)
if (a[i] > max) max = a[i];
beads = calloc(1, max * len);

В худшем случае m = n.Вы ошибаетесь. В худшем случае m много больше n. Так, при сортировке миллиона «обычных» чисел n=10^6, m=2^32. Именно такой эффект и ограничивает применимость сортировки подсчетом.
import Data.List
beadSort :: [Int] -> [Int]
beadSort = map sum. transpose. transpose. map (flip replicate 1)
Бисерная сортировка (Bead sort)