Chciałbym was prosić o pomoc. Otóż gdy próbuję posortować counting sortem 30000 elementową tablicę integerów z zakresu 1-5000, kilka ostatnich elementów nie jest w ogóle posortowanych, czy potrafilibyście wskazać błąd w moim algorytmie? Z góry dziękuję za pomoc.
MAX = 30000;
procedure countingSort(var tab:array[1..MAX] of integer);
var
i:integer;
tmp:array[1..5000] of integer;
result:array[1..MAX] of integer;
begin
for i:=1 to 5000 do tmp[i]:=0;
for i:=1 to MAX do tmp[tab[i]] := tmp[tab[i]] + 1;
for i:=2 to 5000 do tmp[i]:=tmp[i] + tmp[i-1];
for i:=MAX downto 1 do
begin
result[tmp[tab[i]]] := tab[i];
tmp[tab[i]] := tmp[tab[i]] - 1;
end;
for i:=1 to MAX do tab[i] := result[i];
end;